摘要
POSIX ACL (存取控制清單) 可以看做是傳統檔案系統物件許可權概念的擴充。使用 ACL,定義許可權比傳統許可權概念更有彈性。
POSIX ACL 這個詞彙表示這是真正的 POSIX (可攜式作業系統介面) 標準。各自的草稿標準 POSIX 1003.1e 和 POSIX 1003.2c 已經因多種因素而撤銷了。然而,在屬於 UNIX 家族中很多系統發現的 ACL,是以這些草稿為基礎,而且本章節敘述的系統 ACL 實行,也是依循這兩個標準。要查閱它們,請到 http://wt.xpilot.org/publications/posix.1e/。
有關傳統 Linux 檔案許可權的基本說明,請參閱 節 3.2, "使用者和存取許可權" (↑啟動)。還有 setuid、setgid 以及黏貼位元的更多進階功能
在某些狀況下,存取許可權可能受限太多。因此,Linux 擁有其他的設定,可以讓目前使用者與群組可以識別特定動作的暫時變更。例如,passwd 程式通常需要開機許可權來存取 /etc/passwd。此檔案包含一些重要的資訊,例如,使用者的主目錄,以及使用者與群組的 ID。因此,一般使用者將無法變更 passwd,因為授與所有使用者直接存取此檔案是非常危險的。此問題的可行解決方案是 setuid 機制。setuid (設定使用者 ID) 是一種特殊檔案屬性,可以指示系統根據特定使用者 ID 的標示來執行程式。請考慮使用 passwd 指令:
-rwsr-xr-x 1 root shadow 80036 2004-10-02 11:08 /usr/bin/passwd
您會看到 s,表示已針對使用者許可權設定 setuid 位元。藉由 setuid 位元,所有啟動 passwd 指令的使用者,皆能以 root 身分來執行。
setuid 位元適用於使用者。不過,群組也有對等的屬性:setgid 位元。設定此位元的程式會以儲存時指定的群組 ID 來執行,無論啟動它的使用者為何。因此,在附帶 setgid 位元的目錄中,所有新建的檔案和子目錄會指定至目錄所屬的群組。請思考以下範例目錄:
drwxrws--- 2 tux archive 48 Nov 19 17:12 backup
您會看到 s,表示已針對群組許可權設定 setgid 位元。目錄的擁有者與 archive 群組的成員可存取此目錄。非此群組成員的使用者會「對應」到個別群組。所有已寫入檔案的有效群組 ID 將會是 archive。例如,以 archive 群組 ID 執行的備份程式,即使沒有 root 權限,仍然能夠存取此目錄。