1.Set UID: 是為了讓一般使用者在執行某些程式的時候, 能夠暫時的具有該程式擁有者的權限。一個應用場景就是:一些腳本,設置了它們的uid,這樣指定的一些用戶只要執行這些腳本就能夠完成相應的工作,而無須以數據庫管理員的身份登錄,以免不小心破壞了數據庫服務器。通過執行這些腳本,他們可以完成數據庫備份及其他管理任務,但是在這些腳本運行結束之后,他們就又回復到他們作為普通用戶的權限。
2.Set GID:
  • 檔案:如果 SGID 是設定在 binary file 上面,則不論使用者是誰,在執行該程式的時候, 他的有效群組 (effective group) 將會變成該程式的群組所有人 (group id)。

  • 目錄:如果 SGID 是設定在 A 目錄上面,則在該 A 目錄內所建立的檔案或目錄的 group ,將會是 此 A 目錄的 group .

3.Sticky Bit: 目前只針對目錄有效,對于檔案已經沒有效果了。 SBit 對于目錄的作用是:‘在具有 SBit 的目錄下,使用者若在該目錄下具有 w 及 x 的權限, 則當使用者在該目錄下建立檔案或目錄時,只有檔案擁有者與 root 才有權力刪除’。換句話說:當甲這個使用者于 A 目錄下是擁有 group 或者是 other 的項目,并且擁有 w 的權限, 這表示‘甲使用者對該目錄內任何人建立的目錄或檔案均可進行 "刪除/更名/搬移" 等動作。’ 不過,如果將 A 目錄加上了 Sticky bit 的權限項目時, 則甲只能夠針對自己建立的檔案或目錄進行刪除/更名/移動等動作

4.SUID/SGID/SBIT 權限設定: 如何開啟檔案使成為具有 SUID 與 SGID 的權限呢?! 這就需要剛剛的數字更改權限的方法了!現在你應該已經知道數字型態個更改權限方式為‘三個數字’的組合, 那么如果在這三個數字之前再加上一個數字的話,那最前的面數字就代表這幾個屬性了! ( 注:通常我們使用 chmod xyz filename 的方式來設定 filename 的屬性時,則是假設沒有 SUID, SGID 及 Sticky bit 啦! )

  • 4 為 SUID
  • 2 為 SGID
  • 1 為 Sticky bit

        [root@linux ~]# cd /tmp
        [root@linux tmp]# touch test
        [root@linux tmp]# chmod 4755 test; ls -l test
        -rwsr-xr-x  1 root root 0 Jul 20 11:27 test
        [root@linux tmp]# chmod 6755 test; ls -l test
        -rwsr-sr-x  1 root root 0 Jul 20 11:27 test
        [root@linux tmp]# chmod 1755 test; ls -l test
        -rwxr-xr-t  1 root root 0 Jul 20 11:27 test
        [root@linux tmp]# chmod 7666 test; ls -l test
        -rwSrwSrwT  1 root root 0 Jul 20 11:27 test
        # 這個例子就要特別小心啦!怎么會出現大寫的 S 與 T 呢?不都是小寫的嗎?
        # 因為 s 與 t 都是取代 x 這個參數的,但是你有沒有發現阿,我們是下達 
        # 7666 喔!也就是說, user, group 以及 others 都沒有 x 這個可執行的標志 
        # ( 因為 666 嘛! ),所以,這個 S, T 代表的就是‘空的’啦!怎么說? 
        # SUID 是表示‘該檔案在執行的時候,具有檔案擁有者的權限’,但是檔案
        # 擁有者都無法執行了,哪里來的權限給其他人使用?當然就是空的