Set UID
會製作出 s 與 t 的權限,是為了讓一般使用者在執行某些程式的時候, 能夠暫時的具有該程式擁有者的權限。 舉例來說好了,我們知道帳號與密碼的存放檔案其實是 /etc/passwd 與 /etc/shadow 。 而
/etc/shadow 這個檔案的權限是什麼?是『-r--------』。且他的擁有者是 root 喔!在這個權限中,僅有
root 可以『強制』儲存,其他人是連看都沒有辦法看的吶!
SUID 僅可用在『二進位制檔案(binary file)』上, SUID 因為是程式在執行的過程中擁有檔案擁有者的權
限,因此,他僅可用於 binary file , 不能夠用在批次檔 (shell script) 上面的!這是因為 shell script 只是
將很多的 binary 執行檔叫進來執行而已!所以 SUID 的權限部分,還是得要看 shell script 呼叫進來的程
式的設定, 而不是 shell script 本身。當然,SUID 對於目錄也是無效的~這點要特別留意。
Set GID
進一步來說,如果 s 的權限是在 group 時,那麼就是 Set GID ,簡稱為 SGID。 SGID 可以用在兩個部分喔!
檔案:如果 SGID 是設定在 binary file 上面,則不論使用者是誰,在執行該程式的時候, 他的有效群組
(effective group) 將會變成該程式的群組所有人 (group id)
目錄:如果 SGID 是設定在 A 目錄上面,則在該 A 目錄內所建立的檔案或目錄的 group ,將會是 此 A
目錄的 group !
一般來說, SGID 應該是比較多用在特定的多人團隊的專案開發上, 在系統當中應該會比較少這個設
定才對~
Sticky Bit
這個 Sticky Bit 目前只針對目錄有效,對於檔案已經沒有效果了。 SBit 對於目錄的作用是:『在具有SBit 的目錄下,使用者若在該目錄下具有 w 及 x 的權限, 則當使用者在該目錄下建立檔案或目錄時,
只有檔案擁有者與 root 才有權力刪除』。換句話說:當甲這個使用者於 A 目錄下是擁有 group 或者是
other 的項目,並且擁有 w 的權限, 這表示『甲使用者對該目錄內任何人建立的目錄或檔案均可進行
"刪除/更名/搬移" 等動作。』 不過,如果將 A 目錄加上了 Sticky bit 的權限項目時, 則甲只能夠針對自
己建立的檔案或目錄進行刪除/更名/移動等動作。
舉例來說,我們的 /tmp 本身的權限是『drwxrwxrwt』, 在這樣的權限內容下,任何人都可以在 /tmp
內新增、修改檔案,但僅有該檔案/目錄建立者與 root 能夠刪除自己的目錄或檔案。這個特性也是挺重
要的啊!你可以這樣做個簡單的測試:
1. 以 root 登入系統,並且進入 /tmp 當中;
2. touch test,並且更改 test 權限成為 777 ;
3. 以一般使用者登入,並進入 /tmp;
4. 嘗試刪除 test 這個檔案!
SUID/SGID/SBIT 權限設定
前面介紹過 SUID 與 SGID 的功能,那麼如何開啟檔案使成為具有 SUID 與 SGID 的權限呢?! 這就需要剛剛的數字更改權限的方法了!現在你應該已經知道數字型態個更改權限方式為『三個數字』的組
合, 那麼如果在這三個數字之前再加上一個數字的話,那最前的面數字就代表這幾個屬性了! ( 註:
通常我們使用 chmod xyz filename 的方式來設定 filename 的屬性時,則是假設沒有 SUID, SGID 及
Sticky bit 啦! )
4 為 SUID
2 為 SGID
1 為 Sticky bit
假設要將一個檔案屬性改為『-rwsr-xr-x』時,由於 s 在使用者權限中,所以是 SUID ,因此, 在原先
的 755 之前還要加上 4 ,也就是:『 chmod 4755 filename 』來設定!此外,還有大 S 與大 T 的產生
喔!
鳥哥的 Linux 私房菜 - 檔案與目錄
資料來源:http://www.vbird.org/linux_basic/0220filemanager.php |