linux三個(gè)特殊權(quán)限setuid、setgid和stick bit使用詳解
發(fā)布時(shí)間:2013-05-07 23:20:11 作者:佚名
我要評(píng)論

今天一直在弄Samba服務(wù)的配置,深深的感受到權(quán)限控制的困難,文件權(quán)限的機(jī)制是Linux系統(tǒng)中的一大特色,除了我們現(xiàn)在所熟知的讀(r)、寫(xiě)(w)、執(zhí)行(x)權(quán)限外,還有三個(gè)比較特殊的權(quán)限,分別為:setuid、setgid和stick bit(粘滯位)
1、setuid與setgid講解
看一下系統(tǒng)中用到它的地方,以/etc/passwd和/usr/bin/passwd為例:
[root@Salve1 school]# ll /etc/passwd /usr/bin/passwd
-rw-r--r-- 1 root root 2005 Apr 23 01:25 /etc/passwd
-rwsr-xr-x 1 root root 23420 Aug 11 2010 /usr/bin/passwd
[root@Salve1 school]#
分析一下,/etc/passwd的權(quán)限為 -rw-r--r-- 也就是說(shuō):該文件的所有者擁有讀寫(xiě)的權(quán)限,而用戶(hù)組成員和其它成員只有查看的權(quán)限。我們知道,在系統(tǒng)中我們要修改一個(gè)用戶(hù)的密碼,root用戶(hù)和普通用戶(hù)均可以用/usr/bin/passwd someuser這個(gè)命令來(lái)修改這個(gè)/etc/passwd這個(gè)文件,root用戶(hù)本身?yè)碛袑?duì)/etc/passwd的寫(xiě)權(quán)限,無(wú)可厚非;那普通用戶(hù)呢,這里就用到了setuid,setuid的作用是“讓執(zhí)行該命令的用戶(hù)以該命令擁有者的權(quán)限去執(zhí)行”,就是普通用戶(hù)執(zhí)行passwd時(shí)會(huì)擁有root的權(quán)限,這樣就可以修改/etc/passwd這個(gè)文件了。它的標(biāo)志為:s,會(huì)出現(xiàn)在x的地方,例:-rwsr-xr-x 。而setgid的意思和它是一樣的,即讓執(zhí)行文件的用戶(hù)以該文件所屬組的權(quán)限去執(zhí)行。
2、stick bit(粘滯位)
看一下系統(tǒng)中用到它的地方,以/tmp為例:
[root@Salve1 /]# ll -d /tmp
drwxrwxrwt 13 root root 4096 Apr 23 02:06 /tmp
[root@Salve1 /]#
我們知道/tmp是系統(tǒng)的臨時(shí)文件目錄,所有的用戶(hù)在該目錄下?lián)碛兴械臋?quán)限,也就是說(shuō)在該目錄下可以任意創(chuàng)建、修改、刪除文件,那如果用戶(hù)A在該目錄下創(chuàng)建了一個(gè)文件,用戶(hù)B將該文件刪除了,這種情況我們是不能允許的。為了達(dá)到該目的,就出現(xiàn)了stick bit(粘滯位)的概念。它是針對(duì)目錄來(lái)說(shuō)的,如果該目錄設(shè)置了stick bit(粘滯位),則該目錄下的文件除了該文件的創(chuàng)建者和root用戶(hù)可以刪除和修改/tmp目錄下的stuff,別的用戶(hù)均不能動(dòng)別人的,這就是粘滯位的作用。
3、如何設(shè)置上述特殊權(quán)限
chmod u+s xxx # 設(shè)置setuid權(quán)限
chmod g+s xxx # 設(shè)置setgid權(quán)限
chmod o+t xxx # 設(shè)置stick bit權(quán)限,針對(duì)目錄
chmod 4775 xxx # 設(shè)置setuid權(quán)限
chmod 2775 xxx # 設(shè)置setgid權(quán)限
chmod 1775 xxx # 設(shè)置stick bit權(quán)限,針對(duì)目錄
4、注意:有時(shí)你設(shè)置了s或t 權(quán)限,你會(huì)發(fā)現(xiàn)它變成了S或T,這是因?yàn)樵谀莻€(gè)位置上你沒(méi)有給它x(可執(zhí)行)的權(quán)限,這樣的話(huà)這樣的設(shè)置是不會(huì)有效的,你可以先給它賦上x(chóng)的權(quán)限,然后再給s或t 的權(quán)限。
看一下系統(tǒng)中用到它的地方,以/etc/passwd和/usr/bin/passwd為例:
復(fù)制代碼
代碼如下:[root@Salve1 school]# ll /etc/passwd /usr/bin/passwd
-rw-r--r-- 1 root root 2005 Apr 23 01:25 /etc/passwd
-rwsr-xr-x 1 root root 23420 Aug 11 2010 /usr/bin/passwd
[root@Salve1 school]#
分析一下,/etc/passwd的權(quán)限為 -rw-r--r-- 也就是說(shuō):該文件的所有者擁有讀寫(xiě)的權(quán)限,而用戶(hù)組成員和其它成員只有查看的權(quán)限。我們知道,在系統(tǒng)中我們要修改一個(gè)用戶(hù)的密碼,root用戶(hù)和普通用戶(hù)均可以用/usr/bin/passwd someuser這個(gè)命令來(lái)修改這個(gè)/etc/passwd這個(gè)文件,root用戶(hù)本身?yè)碛袑?duì)/etc/passwd的寫(xiě)權(quán)限,無(wú)可厚非;那普通用戶(hù)呢,這里就用到了setuid,setuid的作用是“讓執(zhí)行該命令的用戶(hù)以該命令擁有者的權(quán)限去執(zhí)行”,就是普通用戶(hù)執(zhí)行passwd時(shí)會(huì)擁有root的權(quán)限,這樣就可以修改/etc/passwd這個(gè)文件了。它的標(biāo)志為:s,會(huì)出現(xiàn)在x的地方,例:-rwsr-xr-x 。而setgid的意思和它是一樣的,即讓執(zhí)行文件的用戶(hù)以該文件所屬組的權(quán)限去執(zhí)行。
2、stick bit(粘滯位)
看一下系統(tǒng)中用到它的地方,以/tmp為例:
復(fù)制代碼
代碼如下:[root@Salve1 /]# ll -d /tmp
drwxrwxrwt 13 root root 4096 Apr 23 02:06 /tmp
[root@Salve1 /]#
我們知道/tmp是系統(tǒng)的臨時(shí)文件目錄,所有的用戶(hù)在該目錄下?lián)碛兴械臋?quán)限,也就是說(shuō)在該目錄下可以任意創(chuàng)建、修改、刪除文件,那如果用戶(hù)A在該目錄下創(chuàng)建了一個(gè)文件,用戶(hù)B將該文件刪除了,這種情況我們是不能允許的。為了達(dá)到該目的,就出現(xiàn)了stick bit(粘滯位)的概念。它是針對(duì)目錄來(lái)說(shuō)的,如果該目錄設(shè)置了stick bit(粘滯位),則該目錄下的文件除了該文件的創(chuàng)建者和root用戶(hù)可以刪除和修改/tmp目錄下的stuff,別的用戶(hù)均不能動(dòng)別人的,這就是粘滯位的作用。
3、如何設(shè)置上述特殊權(quán)限
復(fù)制代碼
代碼如下:chmod u+s xxx # 設(shè)置setuid權(quán)限
chmod g+s xxx # 設(shè)置setgid權(quán)限
chmod o+t xxx # 設(shè)置stick bit權(quán)限,針對(duì)目錄
chmod 4775 xxx # 設(shè)置setuid權(quán)限
chmod 2775 xxx # 設(shè)置setgid權(quán)限
chmod 1775 xxx # 設(shè)置stick bit權(quán)限,針對(duì)目錄
4、注意:有時(shí)你設(shè)置了s或t 權(quán)限,你會(huì)發(fā)現(xiàn)它變成了S或T,這是因?yàn)樵谀莻€(gè)位置上你沒(méi)有給它x(可執(zhí)行)的權(quán)限,這樣的話(huà)這樣的設(shè)置是不會(huì)有效的,你可以先給它賦上x(chóng)的權(quán)限,然后再給s或t 的權(quán)限。
相關(guān)文章
Fedora Linux 42 穩(wěn)定版發(fā)布: 帶來(lái)大量新功能和軟件更新
Fedora 42昨日發(fā)布,這是 Red Hat 贊助開(kāi)發(fā)的杰出前沿 Linux 發(fā)行版的最新版,包含大量新功能和軟件更新,使其成為 2025 年上半年發(fā)布的一款出色的 Linux 操作系統(tǒng)之一,內(nèi)2025-04-16如何在Linux查看硬盤(pán)信息? 查看Linux硬盤(pán)大小類(lèi)型和硬件信息的5種方法
使用Linux系統(tǒng)的過(guò)程中,查看和了解硬盤(pán)信息是非常重要的工作,尤其是對(duì)于系統(tǒng)管理員而言,那么在Linux系統(tǒng)中如何查看硬盤(pán)信息?以下是具體內(nèi)容介紹2025-03-12如何在 Linux 中查看 CPU 詳細(xì)信息? 3招輕松查看CPU型號(hào)、核心數(shù)和溫度
在日常運(yùn)維工作中,獲取 CPU 信息是系統(tǒng)運(yùn)維管理員常見(jiàn)的工作內(nèi)容,無(wú)論是為了性能調(diào)優(yōu)、硬件升級(jí)還是僅僅滿(mǎn)足好奇心2025-03-11什么是 Arch Linux? 獨(dú)樹(shù)一幟的Arch Linux發(fā)行版分析
Arch Linux是為簡(jiǎn)化,優(yōu)化,現(xiàn)代化,實(shí)用主義,用戶(hù)中心和多功能性而創(chuàng)建Linux發(fā)行版,究竟是什么讓 Arch 與眾不同?下面我們就來(lái)簡(jiǎn)要解讀2025-02-19如何在Linux環(huán)境下制作 Win11裝機(jī)U盤(pán)?
一直用的linux辦公,想要將筆記本電腦從 Linux 系統(tǒng)切換回 Windows 11,我們可以制作一個(gè)win11裝機(jī)u盤(pán),詳細(xì)如下2025-02-17Rsnapshot怎么用? 基于Rsync的強(qiáng)大Linux備份工具使用指南
Rsnapshot 不僅可以備份本地文件,還能通過(guò) SSH 備份遠(yuǎn)程文件,接下來(lái)詳細(xì)介紹如何安裝、配置和使用 Rsnapshot,包括創(chuàng)建每小時(shí)、每天、每周和每月的本地備份,以及如何進(jìn)2025-02-06Linux Kernel 6.13發(fā)布:附更新內(nèi)容及新特性解讀
Linux 內(nèi)核 6.13 正式發(fā)布,新版本引入了惰性搶占支持,簡(jiǎn)化內(nèi)核搶占邏輯,通過(guò)減少與調(diào)度器相關(guān)的調(diào)用次數(shù),讓內(nèi)核在運(yùn)行時(shí)表現(xiàn)更優(yōu),從而提高效率2025-01-23五大特性引領(lǐng)創(chuàng)新! 深度操作系統(tǒng) deepin 25 Preview預(yù)覽版發(fā)布
今日,深度操作系統(tǒng)正式推出deepin 25 Preview版本,該版本集成了五大核心特性:磐石系統(tǒng)、全新DDE、Treeland窗口合成器、AI For OS以及Distrobox子系統(tǒng)2025-01-18Linux Mint Xia 22.1重磅發(fā)布: 重要更新一覽
Beta 版 Linux Mint“Xia” 22.1 發(fā)布,新版本基于 Ubuntu 24.04,內(nèi)核版本為 Linux 6.8,這次更新帶來(lái)了諸多優(yōu)化和改進(jìn),進(jìn)一步鞏固了 Mint 在 Linux 桌面操作系統(tǒng)領(lǐng)域的2025-01-16LinuxMint怎么安裝? Linux Mint22下載安裝圖文教程
Linux Mint22發(fā)布以后,有很多新功能,很多朋友想要下載并安裝,該怎么操作呢?下面我們就來(lái)看看詳細(xì)安裝指南2025-01-16