
一、SUID 與 SGID
- 一般用於二進制程序;
- 執行者需要有該二進制程序的x權限;
- 執行具有SUID權限的二進制程序,那麼執行者將具有該二進制程序所有者的權限。
舉例來說,/etc/passwd文件的權限是 -rw-r--r--,用戶更改密碼時需要對passwd文件進行寫操作,root可以讀寫不用說,那普通用戶為什麼也能進行修改呢?這裡就需要SUID來解決。
修改密碼時是用/usr/bin/passwd工具進行修改的。setuid的作用是讓執行該命令的用戶以該命令擁有者的權限去執行,就是普通用戶執行passwd時會擁有root的權限,這樣就可以修改/etc/passwd這個文件了。
下面權限中的s就標誌著SUID:
# ls -al /usr/bin/passwd

- SGID 的意思和它是一樣的,即讓執行文件的用戶以該文件所屬組的權限去執行。
二、stick bit / SBIT (粘滯位)
以/tmp為例,tmp為存放臨時文件的文件夾。所有用戶都可以對他進行讀寫執行。那如果A用戶創建了一個文件再tmp中,B用戶把給刪除了。這種情況是不允許出現的。如果設置了stick bit(粘滯位),那目錄下的文件就只有root和創建者有權限區讀寫執行,其他人是無法更改的。這就是粘滯位的作用
- 粘滯位只能針對目錄設置
- SGID 與 SUID 可以設置目錄跟文件
三、特殊權限的具體設置:
SUID:
- SUID 一般情況下都設置在二進制文件上,設置在目錄上沒有意義
- 啟動為進程之後,其進程的屬主為原程序文件的屬主
# chmod u+s file
# chmod u-s file
文件設置 SGID:
- 啟動為進程之後,其進程的屬主為原程序文件的屬組
# chmod g+s file
# chmod g-s file
目錄設置SGID:
- 目錄被設定了SGID,則對此目錄有寫權限的用戶在此目錄中創建的文件所屬的組為此目錄的屬組
# chmod g-s dir/
# chmod g+s dir/
SBIT:
- 一般用在目錄上設置SBIT,在此目錄下創建的文件只有root與創建者有修改和刪除權限
# chmod o+t dir/
# chmod o-t dir/
閱讀更多 你永遠得不到的小老弟 的文章