Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux ACL 訪問控制列表:突破 rwx 基礎權限,實現精細化授權

編輯:Linux 教學

傳統 chmod 僅支持 User/Group/Other 三元權限,無法滿足「用戶 A 讀寫、用戶 B 唯讀、組 C 無權限」等精細場景。ACL (Access Control List) 提供針對任意用戶/組的額外權限條目,本文詳解 getfacl/setfacl 實戰。

一、 核心命令

命令作用
getfacl 文件查看 ACL 信息
setfacl -m u:用戶:權限 文件添加/修改用戶 ACL
setfacl -m g:組:權限 文件添加/修改組 ACL
setfacl -x u:用戶 文件刪除用戶 ACL
setfacl -b 文件刪除所有 ACL
setfacl -d -m u:用戶:權限 目錄設置默認 ACL (繼承)

二、 getfacl 輸出解讀


# file: test.txt
# owner: root
# group: root
user::rwx
user:alice:rw-
group::r--
group:dev:rwx
mask::rwx
other::r--
  • user:: 文件所有者基礎權限 (等同 ls -l 第一組)。
  • user:alice:rw- 針對用戶 alice 的額外權限。
  • group:: 所屬組基礎權限。
  • group:dev:rwx 針對組 dev 的額外權限。
  • mask:: **有效權限上限**,所有 ACL 權限與 mask 取交集生效。
  • other:: 其他用戶權限。

三、 實戰案例

場景:項目目錄 /data/project,需求:

  • 所有者 root 全控。
  • 開發組 dev 讀寫執行。
  • 用戶 alice (不在 dev 組) 唯讀。
  • 用戶 bob 無任何權限。
  • 新建文件自動繼承上述規則。

操作步驟


# 1. 基礎權限
chown root:dev /data/project
chmod 770 /data/project

# 2. 設置 ACL
setfacl -m u:alice:r-x /data/project
setfacl -m g:dev:rwx /data/project
# mask 自動計算為 rwx,無需手動設

# 3. 設置默認 ACL (關鍵:新建文件/目錄自動繼承)
setfacl -d -m u:alice:r-x /data/project
setfacl -d -m g:dev:rwx /data/project
setfacl -d -m m::rwx /data/project

# 4. 驗證
getfacl /data/project
# default:user:alice:r-x
# default:group:dev:rwx
# default:mask::rwx

測試繼承


su - alice
touch /data/project/alice_file.txt
ls -l /data/project/alice_file.txt
# -rw-r-----+ 1 alice dev 0 ...  (權限受 mask 限制為 r--)
getfacl /data/project/alice_file.txt
# user:alice:r--
# group:dev:rwx

四、 進階技巧

1. 批量複製 ACL


getfacl source_file | setfacl --set-file=- target_file
# 或遞歸
getfacl -R /data/project | setfacl --set-file=- -R /backup/project

2. 刪除特定條目


setfacl -x u:alice /data/project
setfacl -x g:dev /data/project

3. 完全清除 ACL


setfacl -b /data/project

4. 文件系統支持檢查


# 掛載選項需包含 acl (ext4/xfs 默認支持)
mount | grep acl
# 或
tune2fs -l /dev/sda1 | grep "Default mount options"

五、 lsattr / chattr 擴展屬性補充

屬性chattr 參數效果
不可修改+iroot 也無法刪除/修改/重命名,需 -i 解除
只追加+a只能追加寫入,不能覆蓋/刪除,日志文件適用
同步寫入+S數據同步寫入磁盤
無訪問時間更新+A不更新 atime,減少磁盤 I/O
壓縮+c內核透明壓縮 (需文件系統支持)

# 查看
lsattr /etc/passwd
# 設置
chattr +i /etc/passwd
chattr +a /var/log/messages

六、 ACL vs 傳統權限 選型指南

場景推薦方案
簡單的用戶/組/其他區分chmod/chown
多組/多用戶差異化權限ACL
目錄樹繼承權限模板默認 ACL (setfacl -d)
防誤刪關鍵系統文件chattr +i
審計日志只追加不覆蓋chattr +a
Copyright © Windows教程網 All Rights Reserved