傳統的權限管理機制——基于用戶(User)、組(Group)和其他人(Others)的讀(Read)、寫(Write)和執行(Execute)權限,雖然在一定程度上滿足了基本需求,但在面對更復雜、更精細的權限控制要求時,顯得力不從心
為了彌補這一不足,訪問控制列表(Access Control Lists,簡稱ACL)應運而生
本文將深入探討ACL在Linux系統中的強大功能,并通過實際命令操作展示其應用
一、ACL概述 ACL提供了一種比傳統權限模式更細粒度的權限控制機制
它允許你為單個文件或目錄設置針對特定用戶或組的權限,而不僅僅局限于文件的所有者、所屬組和其他用戶
這意味著,你可以為某個文件指定某個特定用戶擁有讀權限,而另一個用戶只有寫權限,甚至可以為一個組設置特定的執行權限,而不影響其他用戶或組的權限
ACL在Linux中的實現依賴于文件系統的支持
目前,大多數現代Linux發行版默認使用的ext4、Btrfs和XFS等文件系統都支持ACL
要檢查你的文件系統是否支持ACL,可以使用`tune2fs`命令查看ext系列文件系統的超級塊信息,或使用`mount`命令查看掛載選項中的`acl`標志
二、ACL的基本命令 在Linux中,管理ACL的主要命令包括`getfacl`、`setfacl`和`chacl`(注意:`chacl`在某些發行版中可能不可用,本文主要介紹前兩個)
1.getfacl:用于查看文件或目錄的ACL設置
bash getfacl filename 這將顯示文件`filename`的所有ACL條目,包括默認ACL(如果適用)
2.setfacl:用于設置或修改文件或目錄的ACL
-為文件設置ACL: ```bash setfacl -m u:username:rwx filename ``` 上述命令為用戶`username`設置對文件`filename`的讀、寫和執行權限
-為目錄設置ACL: ```bash setfacl -m d:u:username:rx dirname ``` 這里的`-d`選項用于設置默認ACL,意味著在`dirname`目錄下創建的新文件或目錄將自動繼承這些權限
上例表示用戶`username`對目錄`dirname`及其子目錄和文件有讀和執行權限(注意:寫權限未設置,因此新文件不會被`username`修改)
-為組設置ACL: ```bash setfacl -m g:groupname:rw filename ``` 為組`groupname`設置對文件`filename`的讀和寫權限
-刪除ACL條目: ```bash setfa