【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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM