drwxrwxrwt. 24 root root 4096 5月 16 19:30 /tmp-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd我們可以看到 passwd 文件的權限是 -rwsr-xr-x ;當 s 這個標示出現在文件擁有者的 x 權限上時,就被成為 Set UID ,簡稱 SUID 的特殊權限。它的限制與功能:SUID 權限僅對二進位程序有效
執行者對於該程序具有 x 的可執行權限
本權限僅在執行該程序的過程中有效
執行者將具有該程序擁有者的權限(重點)
舉例: passwd 命令擁有者是 root ,,passwd 命令會修改 /etc/shadow 這個文件,而這個文件的權限為 . 1 root root 2560 5月 6 20:37 /etc/shadow ,雖然任何人沒有讀和修改的權限,但是 root 是可以修改,因為 root 是可以修改系統中任意的文件,不受權限控制。普通用戶可以使用 passwd 修改自己的密碼,但是修改密碼就必須要去修改 /etc/shadow 文件,但普通用戶又沒有修改這個文件的權限,那是不是代表用戶就用不了 passwd 這個命令了嗎?當然不是。SUID 就是處理此問題創造的;當用戶執行了帶有 SUID 的二進位文件命令時,就會臨時具有該文件擁有者的權限,在程序執行的過程中,攜帶著文件擁有者的權限來執行命令,也就解決了上面所說的問題。即普通用戶使用 passwd 修改自己密碼,passwd 修改 /etc/shadow 文件時,擁有的是 root 用戶的權限,也就可以修改 /etc/shadow 文件了。
僅可用在二進位程序上,不能夠用在 shell 腳本上當 s 標示在文件擁有者 x 項為 SUID,那 s 在用戶組的 x 時則稱為 Set。GID(SGID)與 SUID 不同的是, SGID 可以針對文件或目錄來設置.如果對文件來說 SGID 有如下的功能:SGID 僅對二進位程序有用
程序執行者對於該程序來說,需具備 x 的權限
執行者在執行的過程中將會獲得該程序用戶組的權限
舉例: /usr/bin/locate 命令會去讀 -rw-r. 1 root slocate 2875836 5月 16 03:32 /var/lib/mlocate/mlocate.db 這個文件,如果我們使用普通帳號執行 locate 時,那普通用戶將會取得 slocate 用戶組的權限,因此就能夠去讀取 mlocate.db。當 SGID 作用在一個目錄上,它將具有如下功能:用戶若對於此目錄具有 r 與 w 的權限時,該用戶能夠進入此目錄
用戶在此目錄下的有效用戶組將會變成該目錄的用戶組
用途: 若用戶在此目錄下具有 w 的權限(創建文件),則該用戶所建立的新文件,該文件的用戶組與此目錄的用戶組相同
對於一個學習小組有一個共享目錄的情況下如果不設置 SGID,那麼每個人在該共享目錄下創建的文件其他人都不能修改(除非修改了 umask)使用起來很不方便Sticky Bit (SBIT) 目前只針對目錄有效,對於文件已經沒有效果了,SBIT 對於目錄的作用是:當一個目錄設置了 SBIT 時一個普通用戶創建的文件哪怕權限是 -rw-rw-rw,其他用戶也無法刪除,更名,移動等操作僅可自己和 root 刪除,更名,移動
chmod 是修改權限的命令,我們當然也是使用 chmod 來設置 SUID,SGID, SBIT了。假設要將一個文件權限修改文 -rwsr-xr-x 時由於 s 在用戶權限中,所以是 SUID因此在原先的 755 之前還要加上 4也就是 chmod 4755 filename 來設置和設置普通的權限一樣如果要設置 SUID 又要設置 SGID 則是 chmod 6755 filename以此類推
鑑於篇幅有限,更多詳細課程大綱/知識體系/實體書籍/網工必備工具包等請掃碼加群獲取!