首頁 > 套件與系統管理 > setfacl

setfacl:設定檔案存取控制清單 (ACL)

`setfacl` 命令用於設定檔案和目錄的存取控制清單 (ACL)。它超越了傳統的 Unix 權限模型(擁有者、群組、其他人),允許您為特定使用者或群組授予或撤銷細粒度的讀取、寫入和執行權限。這使得您可以靈活地管理複雜的權限要求。

概述

`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 選項預先檢查,重要資料請備份後再套用

相同類別命令