setfacl命令是用來在命令行里設置ACL(訪問控制列表)。在命令行里,一系列的命令跟隨以一系列的文件名。
選項
-b,--remove-all:刪除所有擴展的acl規則,基本的acl規則(所有者,群組,其他)將被保留。-k,--remove-default:刪除缺省的acl規則。如果沒有缺省規則,將不提示。-n,--no-mask:不要重新計算有效權限。setfacl默認會重新計算ACL mask,除非mask被明確的制定。--mask:重新計算有效權限,即使ACL mask被明確指定。-d,--default:設定默認的acl規則。--restore=file:從文件恢復備份的acl規則(這些文件可由getfacl -R產生)。通過這種機制可以恢復整個目錄樹的acl規則。此參數不能和除--test以外的任何參數一同執行。--test:測試模式,不會改變任何文件的acl規則,操作后的acl規格將被列出。-R,--recursive:遞歸的對所有文件及目錄進行操作。-L,--logical:跟蹤符號鏈接,默認情況下只跟蹤符號鏈接文件,跳過符號鏈接目錄。-P,--physical:跳過所有符號鏈接,包括符號鏈接文件。--version:輸出setfacl的版本號并退出。--help:輸出幫助信息。--:標識命令行參數結束,其后的所有參數都將被認為是文件名-:如果文件名是-,則setfacl將從標準輸入讀取文件名。選項
-m和-x后邊跟以acl規則。多條acl規則以逗號(,)隔開。選項-M和-X用來從文件或標準輸入讀取acl規則。  選項--set和--set-file用來設置文件或目錄的acl規則,先前的設定將被覆蓋。  選項-m(--modify)和-M(--modify-file)選項修改文件或目錄的acl規則。  選項-x(--remove)和-X(--remove-file)選項刪除acl規則。當使用-M,-X選項從文件中讀取規則時,setfacl接受getfacl命令輸出的格式。每行至少一條規則,以#開始的行將被視為注釋。
當在不支持ACLs的文件系統上使用setfacl命令時,setfacl將修改文件權限位。如果acl規則并不完全匹配文件權限位,setfacl將會修改文件權限位使其盡可能的反應acl規則,并會向standard error發送錯誤消息,以大于0的狀態返回。
權限
文件的所有者以及有CAP_FOWNER的用戶進程可以設置一個文件的acl。(在目前的linux系統上,root用戶是唯一有CAP_FOWNER能力的用戶)
ACL規則
setfacl命令可以識別以下的規則格式:
[d[efault]:] [u[ser]:]uid [:perms] 指定用戶的權限,文件所有者的權限(如果uid沒有指定)。[d[efault]:] g[roup]:gid [:perms] 指定群組的權限,文件所有群組的權限(如果gid未指定)[d[efault]:] m[ask][:] [:perms] 有效權限掩碼[d[efault]:] o[ther] [:perms] 其他的權限
恰當的acl規則被用在修改和設定的操作中,對于uid和gid,可以指定一個數字,也可指定一個名字。perms域是一個代表各種權限的字母的組合:讀-r寫-w執行-x,執行只適合目錄和一些可執行的文件。pers域也可設置為八進制格式。
自動創建的規則
最初的,文件目錄僅包含3個基本的acl規則。為了使規則能正常執行,需要滿足以下規則。
3個基本規則不能被刪除。 任何一條包含指定的用戶名或群組名的規則必須包含有效的權限組合。 任何一條包含缺省規則的規則在使用時,缺省規則必須存在。ACL的名詞定義
先來看看在ACL里面每一個名詞的定義,這些名詞我大多從man page上摘下來雖然有些枯燥,但是對于理解下面的內容還是很有幫助的。
新聞熱點
疑難解答