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 教學

傳統 Linux 權限模型(Owner/Group/Others)僅支持三組 rwx,無法滿足「單個用戶/組對特定文件/目錄擁有獨立權限」的業務場景。ACL (Access Control List) 正是為此而生,提供條目級的精細授權能力。

核心概念

  • User ACL:針對具體用戶設置權限
  • Group ACL:針對具體組設置權限
  • Mask:有效權限上限,限制除 Owner 外所有 ACL 條目實際生效的最大權限
  • Default ACL:目錄專屬,新建文件/子目錄自動繼承的 ACL 模板

核心命令

實戰場景演示

場景 1:開發組用戶 alice 需讀寫項目目錄,運維組用戶 bob 僅讀

# 項目目錄基礎權限
drwxr-x---  root devgrp  project/

# 設置 ACL
setfacl -m u:alice:rwX project/
setfacl -m u:bob:rX project/
setfacl -m m::rwX project/   # 確保 Mask 不限制上述權限

# 驗證
getfacl project/
# file: project
# owner: root
# group: devgrp
user::rwx
user:alice:rwx
user:bob:r-x
group::r-x
mask::rwx
other::---

場景 2:新建文件自動繼承 ACL(默認 ACL)

setfacl -m d:u:alice:rwX project/
setfacl -m d:g:devgrp:rwX project/
setfacl -m d:m::rwX project/

# 驗證默認規則
getfacl project/ | grep default
default:user::rwx
default:user:alice:rwx
default:group::r-x
default:group:devgrp:rwx
default:mask::rwx
default:other::---

此後在 project/ 下創建的任何文件/目錄,自動帶上上述 default ACL。

場景 3:備份與恢復 ACL

# 導出
getfacl -R project/ > project.acl.bak

# 恢復(覆蓋現有 ACL)
setfacl --restore=project.acl.bak

注意事項

  • 文件系統需掛載 acl 選項(ext4/xfs/btrfs 默認支持,/etc/fstab 可顯式聲明)。
  • cp -p/mv 保留 ACL;tar/rsync -A 需顯式參數攜帶 ACL。
  • Mask 是「天花板」:若 mask::r-x,則即使設置 u:alice:rwx 實際也只有 r-x。
  • ls -l 顯示權限位後帶 + 符號表示存在 ACL(如 drwxrwxr-x+)。

圖解參考

ACL 設置示例 1 ACL 設置示例 2

總結

ACL 是多用戶協作、多部門隔離、合規審計場景的標配工具。掌握 getfacl/setfacl 組合拳,配合 Default ACL 實現「一次配置、自動繼承」,徹底解決傳統權限模型的表達能力不足問題。

Copyright © Windows教程網 All Rights Reserved
命令用途
getfacl 文件/目錄查看完整 ACL 信息
setfacl -m u:用戶:權限 文件設置用戶 ACL
setfacl -m g:組:權限 文件設置組 ACL
setfacl -m m::權限 文件設置 Mask
setfacl -m d:u:用戶:權限 目錄設置默認 ACL(遞歸繼承)
setfacl -x u:用戶 文件刪除指定 ACL 條目
setfacl -b 文件清除所有 ACL