linux中除了常見的讀(r)、寫(w)、執行(x)權限之外,還有3個特殊的權限,分別是setuid、setgid和stick bithtml
一、setuid、setgidlinux
先看個實例,查看你的/usr/bin/passwd 與/etc/passwd文件的權限ui
[root@MyLinux ~]# ls -l /usr/bin/passwd /etc/passwd
-rw-r--r-- 1 root root 1549 08-19 13:54 /etc/passwd
-rwsr-xr-x 1 root root 22984 2007-01-07 /usr/bin/passwd
衆所周知,/etc/passwd文件存放的各個用戶的帳號與密碼信息,/usr/bin/passwd是執行修改和查看此文件的程序,但從權限上看,/etc/passwd僅有root權限的寫(w)權,可實際上每一個用戶均可以經過/usr/bin/passwd命令去修改這個文件,因而這裏就涉及了linux裏的特殊權限setuid,正如-rwsr-xr-x中的scode
setuid就是:讓普通用戶擁有能夠執行「只有root權限才能執行」的特殊權限,setgid同理指」組「htm
做爲普通用戶是沒有權限修改/etc/passwd文件的,但給/usr/bin/passwd以setuid權限後,普通用戶就能夠經過執行passwd命令,臨時的擁有root權限,去修改/etc/passwd文件了blog
二、stick bit (粘貼位)it
再看個實例,查看你的/tmp目錄的權限class
[root@MyLinux ~]# ls -dl /tmp
drwxrwxrwt 6 root root 4096 08-22 11:37 /tmp
tmp目錄是全部用戶共有的臨時文件夾,全部用戶都擁有讀寫權限,這就必然出現一個問題,A用戶在/tmp裏建立了文件a.file,此時B用戶看了不爽,在/tmp裏把它給刪了(由於擁有讀寫權限),那確定是不行的。其實是不會發生這種狀況,由於有特殊權限stick bit(粘貼位)權限,正如drwxrwxrwt中的最後一個tgui
stick bit (粘貼位)就是:除非目錄的屬主和root用戶有權限刪除它,除此以外其它用戶不能刪除和修改這個目錄。file
也就是說,在/tmp目錄中,只有文件的擁有者和root才能對其進行修改和刪除,其餘用戶則不行,避免了上面所說的問題產生。用途通常是把一個文件夾的的權限都打開,而後來共享文件,象/tmp目錄同樣。
三、如何設置以上特殊權限
setuid:chmod u+s xxx
setgid: chmod g+s xxx
stick bit : chmod o+t xxx
或者使用八進制方式,在原先的數字前加一個數字,三個權限所表明的進制數與通常權限的方式相似,以下:
suid guid stick bit
1 1 1
因此:suid的二進制串爲:100,換算十進制爲:4
guid的二進制串爲:010,換算:2
stick bit 二進制串:001,換算:1
因而也能夠這樣設:setuid:chmod 4755 xxx
setgid:chmod 2755 xxx
stick bit:chmod 1755 xxx
最後,在一些文件設置了特殊權限後,字母不是小寫的s或者t,而是大寫的S和T,那表明此文件的特殊權限沒有生效,是由於你還沒有給它對應用戶的x權限
轉自:http://www.cnblogs.com/huangzhen/archive/2011/08/22/2149300.html