概述
`setfacl` 允許對檔案系統物件進行更靈活的權限管理。您可以為特定使用者或群組單獨授予或撤銷讀取、寫入和執行權限,還可以設定預設 ACL,以便新建立的檔案或目錄自動繼承 ACL。這在需要精確權限管理的多使用者共用環境中尤其有用。
主要功能
- 為特定使用者/群組設定個別權限
- 設定和繼承預設 (Default) ACL
- 修改和移除現有 ACL
- 遞迴 (Recursive) 套用權限
主要選項
`setfacl` 透過各種選項提供精確的 ACL 控制。以下是一些常用的主要選項。
設定和修改 ACL
移除 ACL
其他
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`setfacl` 執行命令。
請將上述選項組合在一起,與 AI 一同虛擬執行命令。
使用範例
展示使用 `setfacl` 命令管理檔案和目錄 ACL 的各種場景。
授予特定使用者讀取/寫入權限
setfacl -m u:user1:rw testfile.txt
為 `testfile.txt` 檔案授予 `user1` 使用者讀取 (r) 和寫入 (w) 權限。
授予特定群組唯讀權限
setfacl -m g:groupA:r shared_dir
為 `shared_dir` 目錄授予 `groupA` 群組讀取 (r) 權限。
為目錄設定預設 (Default) ACL
setfacl -m d:u:user2:rwx project_data
為 `project_data` 目錄設定預設 ACL,使 `user2` 使用者在新建檔案時擁有讀取/寫入權限,在新建目錄時擁有讀取/寫入/執行權限。
遞迴套用 ACL
setfacl -R -m u:user3:r data_archive
遞迴地為 `data_archive` 目錄及其所有子檔案和子目錄授予 `user3` 使用者讀取權限。
移除特定使用者 ACL 項目
setfacl -x u:user1 testfile.txt
從 `testfile.txt` 檔案中移除 `user1` 使用者的 ACL 項目。
移除所有擴充 ACL 項目
setfacl -b config_dir
移除 `config_dir` 目錄的所有擴充 ACL 項目(保留預設權限)。
移除預設 (Default) ACL 項目
setfacl -k project_data
從 `project_data` 目錄中移除所有已設定的預設 ACL 項目。
安裝
`setfacl` 命令通常是 `acl` 套件的一部分。大多數 Linux 發行版預設都已安裝,但如果找不到該命令,您可以使用以下命令進行安裝。
Debian/Ubuntu 系統
sudo apt update && sudo apt install acl
使用 APT 套件管理器安裝 `acl` 套件。
RHEL/CentOS/Fedora 系統
sudo yum install acl
# 或
sudo dnf install acl
使用 YUM 或 DNF 套件管理器安裝 `acl` 套件。
提示與注意事項
有效使用 `setfacl` 並避免潛在問題的提示和注意事項。
與 getfacl 一起使用
使用 `setfacl` 設定 ACL 後,使用 `getfacl <檔案/目錄>` 命令檢查當前設定的 ACL 非常重要。這有助於驗證權限是否如預期般套用。
- 檢查命令: getfacl <檔案/目錄>
理解遮罩 (mask) 權限
ACL 項目可能包含一個「遮罩 (mask)」項目。遮罩定義了所有使用者和群組 ACL 項目可以擁有的最大有效權限。也就是說,如果授予特定使用者或群組的權限高於遮罩權限,則實際套用的權限將受遮罩限制。設定 ACL 時,遮罩可能會自動調整,因此建議使用 `getfacl` 進行檢查。
- 作用: 限制所有使用者/群組 ACL 項目的最大有效權限
- 檢查: 在 getfacl 的輸出中查看 'mask::' 部分
與預設權限的互動
當檔案或目錄設定了 ACL 時,使用 `ls -l` 命令查看時,權限字串的末尾會出現 `+` 符號。這表示除了標準的 Unix 權限外,還套用了額外的 ACL。ACL 是對標準 Unix 權限模型的補充,但有時也會增加複雜性,因此應謹慎使用。
- ACL 套用標記: 在 ls -l 的輸出中,權限字串末尾出現 '+' 符號
遞迴套用 (-R) 時的注意事項
使用 `-R` 選項遞迴套用 ACL 時要小心。特別是與 `-b`(移除所有 ACL)一起使用時,可能會意外移除所有子檔案和子目錄的 ACL。建議始終先使用 `--test` 選項預覽結果,或在重要資料上進行備份後再套用。
- 建議: 使用 --test 選項預先檢查,重要資料請備份後再套用