suid sgid sticky-bit 三種特殊權限簡介

三種特殊權限簡介
SUID

當一個設置了SUID 位的可執行文件被執行時,該文件將以所有者的身份運行,也就是說無論誰來執行這個文件,他都有文件所有者的特權。

如果所有者是 root 的話,那麼執行人就有超級用戶的特權了。

SGID

當一個設置了SGID 位的可執行文件運行時,該文件將具有所屬組的特權, 任意存取整個組所能使用的系統資源。

若一個目錄設置了SGID,則所有被複制到這個目錄下的文件, 其所屬的組都會被重設爲和這個目錄一樣,除非在複製文件時加上-p (preserve,保留文件屬性)的參數,才能保留原來所屬的羣組設置。

sticky-bit

對一個文件設置了sticky-bit之後,儘管其他用戶有寫權限, 也必須由屬主執行刪除、移動等操作。

對一個目錄設置了sticky-bit之後,存放在該目錄的文件僅准許其屬主執行刪除、 移動等操作。


特殊權限的數值表示
三種特殊權限可以用單獨的一位8進制數值表示

SUID、SGID和sticky-bit的數值表示

SUID SGID sticky 二進制 八進制 說明
- - - 000 0 不設置特殊權限
- - t 001 1 只設置sticky
- s - 010 2 只設置SGID
- s t 011 3 只設置SGID和sticky
s - - 100 4 只設置SUID
s - t 101 5 只設置SUID和sticky
s s - 110 6 只設置SUID和SGID
s s t 111 7 設置三種特殊權限

我們知道了文件的權限可以用三個八進制數字表示。其實文件的權限應該用四個八進制來表示,不過用 ls -l 命令時,只顯示三個罷了。那個沒有顯示的八進制數字其實是第一個,它用來設定一些特殊權限。這個八進制數字的三個位是: 
SUID SGID sticky-bit 
它們的含義是:

SUID
當設置了SUID 位的文件被執行時,該文件將以所有者的身份運行,也就是說無論誰來執行這個文件,他都有文件所有者的特權。如果所有者是 root 的話,那麼執行人就有超級用戶的特權了。這時該位將變成一個安全漏洞,因此不要輕易設置該位。 

SGID
與上面的內容類似。文件運行時,運行者將具有所屬組的特權。

sticky-bit

sticky 位要求操作系統既是在可執行程序退出後,仍要在內存中保留該程序的映象。這樣做是爲了節省大型程序的啓動時間。但是會佔用系統資源。因此設置該位,不如把程序寫好。

set uid ;set gid;sticky bit區別

每一個文件有所有者及組編號,set uid ;set gid可以改變用戶對文件具有的權限:寫和執行.

setuid: 在執行時具有文件所有者的權限. 
setgid: 設置目錄. 一個目錄被標上setgid位,此目錄下創建的文件繼承該目錄的屬性. 
sticky bit: 該位可以理解爲防刪除位. 設置sticky bit位後,就算用戶對目錄具有寫權限,但也只能添加文件而不能刪除文件。


如何設置:

操作這些標誌與操作文件權限的命令是一樣的, 都是 chmod. 有兩種方法來操作, 
1) chmod u+s temp -- 爲temp文件加上setuid標誌. (setuid 只對文件有效,U=用戶) 
chmod g+s tempdir -- 爲tempdir目錄加上setgid標誌 (setgid 只對目錄有效,g=組名) 
chmod o+t temp -- 爲temp文件加上sticky標誌 (sticky只對文件有效) 

2) 採用八進制方式. 這一組八進制數字三位的意義如下, 
abc 
a - setuid位, 如果該位爲1, 則表示設置setuid 
b - setgid位, 如果該位爲1, 則表示設置setgid 
c - sticky位, 如果該位爲1, 則表示設置sticky 

設置後, 可以用 ls -l 來查看. 如果本來在該位上有x, 則這些特殊標誌顯示爲小寫字母 (s, s, t). 否則, 顯示爲大寫字母 (S, S, T)
如:

rwsrw-r-- 表示有setuid標誌 (rwxrw-r--:rwsrw-r--)
rwxrwsrw- 表示有setgid標誌 (rwxrwxrw-:rwxrwsrw-)

rwxrw-rwt 表示有sticky標誌 (rwxrw-rwx:rwxrw-rwt)

如何設置suid和guid

第一種:chmod u[g]+u[U] +filename
suid是在u的x位用s/S設定suid,當x位本身就設定了執行權限,則用小s表示;當x沒有設定執行權限,則用大S表示;
eg:file:-rwx r-x r-x
dire:drw- r– r–
—–>
file:-rws(S) r-x r-x
dire:drwS(s) r– r–
guid是在g的x位用s/S設定guid,當x位本身就設定了執行權限,則用小s表示;當x沒有設定執行權限,則用大S表示;

第二種:chmod +4位遵循權限設置的數字 +filename
(1)如果希望設置suid,那麼就將權限位最前面(第一個短橫線_所佔據的)的那一位設置爲4;
(2)如果希望設置guid,那麼就將權限位最前面的那一位設置爲2;
(3)如果希望兩者都置位,那麼將權限位最前面的那一位設置爲4+2。

下面給出幾個例子:

chmod 4755 filename–>rws r-x r- x文件被設置了suid,文件屬主具有讀、寫和執行的權限,所有其他用戶具有讀和執行的權限
chmod 6711 filename–>rws –s –x 文件被設置了suid和guid,文件屬主具有讀、寫和執行的權限,所有其他用戶具有執行的權限
chmod 4764 filename–>rws rw- r- – 文件被設置了suid,文件屬主具有讀、寫和執行的權限,同組用戶具有讀和執行的權限,其他用戶具有讀權限
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章