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 使用 setfacl 建立繼承權限的 ACL 檔案目錄完整教學

編輯:關於 Linux

setfacl 設定檔案存取控制清單 (ACL),支援針對特定用戶/群組授權,並可透過預設 ACL 讓新建檔案/目錄自動繼承父目錄權限。本文示範以 root 為 user1 設定 /mnt/share 目錄 ACL、驗證繼承行為、user1 實際操作測試的完整流程。

環境

  • 目錄:/mnt/share
  • 用戶:user1 (普通用戶)
  • 檔案系統:支援 ACL (ext3/ext4/xfs 掛載選項 acl)

1. 設定存取 ACL (立即生效)

setfacl -m u:user1:rwx /mnt/share
# -m 修改,u:user1:rwx 給 user1 讀寫執行權限

2. 設定預設 ACL (繼承給新建檔案/目錄)

setfacl -d -m u:user1:rwx /mnt/share
# -d 設定預設 ACL,新建檔案/目錄自動繼承此規則

3. 查看 ACL 設定

getfacl /mnt/share
# file: /mnt/share
# owner: root
# group: root
user::rwx
user:user1:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:user1:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

4. 測試繼承行為 (root 在 share 下建檔/目錄)

cd /mnt/share
touch roota rootb
mkdir rootdir1 rootdir2

getfacl roota
# user:user1:rwx         # 有效權限受 mask 限制為 rw-
# default:user:user1:rwx # 目錄才有 default

getfacl rootdir1
# 目錄完整繼承 default ACL,含 default: 區塊

5. user1 實際操作驗證

su - user1
cd /mnt/share
ll
# -rw-rw-r--+ 1 root root 0 ... roota
# drwxrwxr-x+ 2 root root 6 ... rootdir1
# + 表示有 ACL

touch user1a
mkdir user1dir1

getfacl user1a
# owner: user1
# user:user1:rwx (effective:rw-)

rm roota          # 成功刪除 root 建立的檔案
rm -r rootdir1    # 成功刪除 root 建立的目錄

ll
# roota、rootdir1 已刪除,user1a、user1dir1 保留

setfacl ACL 設定與驗證截圖

關鍵點總結

  • setfacl -m 設定存取 ACL,setfacl -d -m 設定預設 ACL(繼承)。
  • 預設 ACL 僅對目錄有效,檔案無 default: 區塊。
  • mask 限制實際生效權限,getfacl 顯示 effective: 權限。
  • ACL 權限顯示於 ls -l 權限位後的 + 號。
  • RHEL 7+ 新增 chacl 工具,功能類似 setfacl 但語法更簡潔。

常用指令速查

操作指令
移除特定用戶 ACLsetfacl -x u:user1 /mnt/share
移除所有 ACLsetfacl -b /mnt/share
移除預設 ACLsetfacl -k /mnt/share
遞歸套用setfacl -R -m u:user1:rwx /mnt/share
複製 ACLgetfacl source | setfacl --set-file=- target
Copyright © Windows教程網 All Rights Reserved