8.2. 設定存取的 ACLs

有兩種類型的 ACLs:『存取的 ACLs』 與 『預設的 ACLs』。 一個存取的 ACL 就是一個特定檔案或目錄的存取控制清單,一個預設的 ACL 只能與目錄 相關連,當目錄中的檔案缺少一個存取的 ACL 時,它將使用該目錄的預設 ACL 規則, 預設的 ACL 是可選的。

可以設定 ACLs 為:

  1. 每一個使用者

  2. 每一個群組

  3. 透過有效的權限遮罩

  4. 至於不屬於檔案所屬之使用者群組的使用者

setfacl 工具程式設定檔案與目錄的 ACLs,使用 -m 的選項來新增或修改一個檔案或目錄的 ACL:

setfacl -m <rules> <files>

必須以下列格式指定規則 (<rules>),也可以使用 逗號將多重規則分隔開,以指定它們在同一指令中。

u:<uid>:<perms>

為一個使用者設定存取 ACL,可以指定使用者名稱或 UID,這個使用者可以系統上任何 有效的使用者。

g:<gid>:<perms>

為一個群組設定存取 ACL,可以指定群組名稱或 GID,這個群組可以系統上任何有效的群組。

m:<perms>

設定有效的權限遮罩,這個遮罩是擁有者群組與所有使用者與群組紀錄的所有權限設定的結合。

o:<perms>

為不屬於檔案所屬之群組的使用者設定存取 ACL。

將會忽視空白字元,權限設定(<perms>) 必須是 r(閱讀), w(寫入) 與 x (執行)等字元的結合。

假如一個檔案或目錄已經有一個 ACL,而且也使用了 setfacl 指令,附加的規則將會 加入到既有的 ACL,或者將會修改既有的規則。

例如,如要給予使用者 tfox 讀取與寫入的權限:

setfacl -m u:tfox:rw /project/somefile

如要移除一個使用者、群組或所有其他人的所有權限,請使用 -x 選項, 而且不指定任何的權限設定:

setfacl -x <rules> <files>

如要移除含有 UID 500 之使用者的所有權限,請執行下列指令:

setfacl -x u:500 /project/somefile