linux中除了常見的讀(r)、寫(w)、執行(x)許可權以外,還有3個特殊的許可權,分別是suid、sgid和sticky bit
1、suid、sgid
先看個例項,檢視你的/usr/bin/passwd 與/etc/passwd檔案的許可權
[root@mylinux ~]眾所周知,/etc/passwd檔案存放的各個使用者的賬號與密碼資訊,/usr/bin/passwd是執行修改和檢視此檔案的程式,但從許可權上看,/etc/passwd僅有root許可權的寫(w)權,可實際上每個使用者都可以通過/usr/bin/passwd命令去修改這個檔案,於是這裡就涉及了linux裡的特殊許可權setuid,正如-rwsr-xr-x中的s#ls -l /usr/bin/passwd /etc/passwd-rw
-r--r
--1root root
154908-
1913:54
/etc
/passwd
-rwsr-xr
-x 1root root
22984
2007-01
-07/usr
/bin
/passwd
suid就是:讓普通使用者擁有可以執行「只有root許可權才能執行」的特殊許可權,sgid同理指」組「
作為普通使用者是沒有許可權修改/etc/passwd檔案的,但給/usr/bin/passwd以suid許可權後,普通使用者就可以通過執行passwd命令,臨時的擁有root許可權,去修改/etc/passwd檔案了
2、sticky bit (貼上位)
再看個例項,檢視你的/tmp目錄的許可權
[root@mylinux ~]tmp目錄是所有使用者共有的臨時資料夾,所有使用者都擁有讀寫許可權,這就必然出現乙個問題,a使用者在/tmp裡建立了檔案a.file,此時b使用者看了不爽,在/tmp裡把它給刪了(因為擁有讀寫許可權),那肯定是不行的。實際上是不會發生這種情況,因為有特殊許可權sticky bit(貼上位)許可權,正如drwxrwxrwt中的最後乙個t#ls -dl /tmp
drwxrwxrwt
6root root
409608-
2211:37
/tmp
sticky bit (貼上位)就是:除非目錄的屬主和root使用者有許可權刪除它,除此之外其它使用者不能刪除和修改這個目錄。
也就是說,在/tmp目錄中,只有檔案的擁有者和root才能對其進行修改和刪除,其他使用者則不行,避免了上面所說的問題產生。用途一般是把乙個資料夾的的許可權都開啟,然後來共享檔案,象/tmp目錄一樣。
3、如何設定以上特殊許可權
suid:chmod u+s ***
sgid: chmod g+s ***
sticky bit : chmod o+t ***
或者使用八進位制方式,在原先的數字前加乙個數字,三個許可權所代表的進製數與一般許可權的方式類似,如下:
suid guid stick bit
1 1 1
所以:suid的二進位制串為:100,換算十進位制為:4
guid的二進位制串為:010,換算:2
sticky bit 二進位制串:001,換算:1
於是也可以這樣設:suid:chmod 4755 ***
sgid:chmod 2755 ***
sticky bit:chmod 1755 ***
最後,在一些檔案設定了特殊許可權後,字母不是小寫的s或者t,而是大寫的s和t,那代表此檔案的特殊許可權沒有生效,是因為你尚未給它對應使用者的x許可權
[日期:2013-08-11]
[字型:大 中 小]
檔案許可權的機制是linux系統的一大特色,對於初學linux的人對可讀(r)、可寫(w)、可執行(x)這都是比較基本的許可權。乙個檔案的許可權有十個位,分為三組來表示。第乙個位為一組,表示檔案的型別:
-:表示一般檔案
d:表示目錄檔案
b:表示塊裝置
c:表示字元裝置
p:表示管道
s:表示套接字
但是linux還有三個比較特殊的許可權,分別是:setuid,setgid,stick bit (粘滯位)。
1、setuid 和setgid:
以/etc/passwd和/usr/bin/passwd為例
/etc/passwd的許可權為 -rw-r--r--。也就是說:該檔案的所有者擁有讀寫的許可權,而使用者組成員和其它成員只有檢視的許可權。我們知道,在系統中我們要修改乙個使用者的密碼,root使用者和普通使用者均可以用「/usr/bin/passwd 使用者名稱」 這個命令來修改這個/etc/passwd這個檔案,root使用者本身擁有對/etc/passwd的寫許可權,可以理解;那普通使用者沒有寫許可權,那他怎麼也能修改呢?這裡就用到了setuid,setuid的作用是讓執行該命令的使用者以該命令擁有者的許可權去執行,就是普通使用者執行passwd時會擁有root的許可權,這樣就可以修改/etc/passwd這個檔案了。它的標誌為:s,會出現在x的地方,例:-rwsr-xr-x 。而setgid的意思和它是一樣的,即讓執行檔案的使用者以該檔案所屬組的許可權去執行。
2、stick bit(粘滯位)
以/tmp為例:
我們知道/tmp是系統的臨時檔案目錄,所有的使用者在該目錄下擁有所有的許可權,也就是說在該目錄下可以任意建立、修改、刪除檔案,那如果使用者a在該目錄下建立了乙個檔案,
使用者b將該檔案刪除了,這種情況我們是不能允許的。為了達到該目的,就出現了stick bit(粘滯位)的概念。它是針對目錄來說的,如果該目錄設定了stick bit(粘滯位),則該目錄下的檔案除了該檔案的建立者和root使用者可以刪除和修改/tmp目錄下的stuff,別的使用者均不能動別人的,這就是粘滯位的作用。
3、如何給檔案設定特殊許可權。
chmod u+s *** # 設定setuid許可權
chmod g+s *** # 設定setgid許可權
chmod o+t *** # 設定stick bit許可權,針對目錄
chmod 4775 *** # 設定setuid許可權
chmod 2775 *** # 設定setgid許可權
chmod 1775 *** # 設定stick bit許可權,針對目錄
注意:有時你設定了s或t 許可權,你會發現它變成了s或t,這是因為在那個位置上你沒有給它x(可執行)的許可權,這樣的話這樣的設定是不會有效的,你可以先給它賦上x的許可權,然後再給s或t 的許可權。
推薦閱讀:
linux acl許可權規劃:getfacl,setfacl使用
linux許可權補充:rwt rwt rws rws 特殊許可權
linux使用者及使用者組許可權
Linux中的檔案特殊許可權
linux中除了常見的讀 r 寫 w 執行 x 許可權以外,還有3個特殊的許可權,分別是setuid setgid和stick bit 1 setuid setgid 先看個例項,檢視你的 usr bin passwd 與 etc passwd檔案的許可權 root mylinux ls l usr...
Linux中的檔案特殊許可權
linux中除了常見的讀 r 寫 w 執行 x 許可權以外,還有3個特殊的許可權,分別是setuid setgid和stick bit 1 setuid setgid 先看個例項,檢視你的 usr bin passwd 與 etc passwd檔案的許可權 root mylinux ls l usr...
Linux中的檔案特殊許可權
linux中除了常見的讀 r 寫 w 執行 x 許可權以外,還有3個特殊的許可權,分別是setuid setgid和stick bit 1 setuid setgid 先看個例項,檢視你的 usr bin passwd 與 etc passwd檔案的許可權 root mylinux ls l usr...