【Linux】理解setuid()、setgid()和sticky位

Linux SETUID機制

(1)進程運行時能夠訪問哪些資源或文件,不取決於進程文件的屬主屬組,而是取決於運行該命令的用戶身份的uid/gid,以該身份獲取各種系統資源。

(2)對一個屬主爲root的可執行文件,如果設置了SUID位,則其他所有普通用戶都將可以以root身份運行該文件,獲取相應的系統資源。

(3)可以簡單地理解爲讓普通用戶擁有可以執行“只有root權限才能執行”的特殊權限。

(4)setuid,setuid的作用是讓執行該命令的用戶以該命令擁有者的權限去執行,比如普通用戶執行passwd時會擁有root的權限,這樣就可以修改/etc/passwd這個文件了。它的標誌爲:s,會出現在x的地方,例:-rwsr-xr-x  。而setgid的意思和它是一樣的,即讓執行文件的用戶以該文件所屬組的權限去執行。

(5)我們知道/tmp是系統的臨時文件目錄,所有的用戶在該目錄下擁有所有的權限,也就是說在該目錄下可以任意創建、修改、刪除文件,那如果用戶A在該目錄下創建了一個文件,用戶B將該文件刪除了,這種情況我們是不能允許的。爲了達到該目的,就出現了stick  bit(粘滯位)的概念。它是針對目錄來說的,如果該目錄設置了stick  bit(粘滯位),則該目錄下的文件除了該文件的創建者和root用戶可以刪除和修改/tmp目錄下的stuff,別的用戶均不能動別人的,這就是粘滯位的作用。

 

Chmod命令中的特殊權限位含義:

1、S_ISUID 04000 文件的 (set user-id on execution)位

2、S_ISGID 02000 文件的 (set group-id on execution)位

3、S_ISVTX 01000 文件的sticky 位

上面的都是8進制數。

 

如何設置UID、GID、STICK_BIT:

SUID:置於 u 的 x 位,原位置有執行權限,就置爲 s,沒有了爲 S .

chmod u+s  xxx # 設置setuid權限

chmod 4551 file // 權限: r-sr-x—x

 

SGID:置於 g 的 x 位,原位置有執行權限,就置爲 s,沒有了爲 S .

chmod g+s  xxx # 設置setgid權限

chmod 2551 file // 權限: r-xr-s--x

 

STICKY:粘滯位,置於 o 的 x 位,原位置有執行權限,就置爲 t ,否則爲T .

chmod o+t  xxx # 設置stick bit權限,針對目錄

chmod 1551 file // 權限: r-xr-x--t

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章