- ACL :Access Control List,實現靈活的權限管理
- 除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限
- CentOS7 默認創建的xfs 和ext4文件系統具有ACL 功能
- CentOS7 之前版本,默認手工創建的ext4 文系統無ACL功能, 需手動增加
tune2fs –o acl /dev/sdb1(分區)
mount –o acl /dev/sdb1 /mnt/test
- ACL 生效順序:所有者,自定義用戶,自定義組,其他人
范例:
mount -o acl /directory
getfacl file |directory
setfacl -m u:wang:rwxfile|directory
setfacl -Rm g:sales:rwX directory
setfacl -M file.acl file|directory
setfacl -m g:salesgroup:rw file|directory
setfacl -m d:u:wang:rx directory
setfacl -x u:wang file |director
setfacl -X file.acl directory
ACL特殊權限特點
- ACL 文件上的group 權限是mask 值(自定義用戶,自定義組,擁有組的最大權限), 而非傳統的組權限
- getfacl 可看到特殊權限:flags
- 通過ACL 賦予目錄默認x 權限 ,目錄內文件也不會繼承x權限
- base ACL 不能刪除
- setfacl -k dir 刪除默認ACL 權限
- setfacl –b file1 清除所有ACL 權限
- getfacl file1 | setfacl --set-file=- file2 復制file1
的的acl權限給file2
[root@VinnyWang app]# getfacl a
# file: a
# owner: root
# group: root
user::rw-
user:wang:rwx
group::r--
mask::rwx
other::r--
[root@VinnyWang app]# touch b
[root@VinnyWang app]# getfacl a |setfacl --set-file=- b
[root@VinnyWang app]# getfacl b
# file: b
# owner: root
# group: root
user::rw-
user:wang:rwx
group::r--
mask::rwx
other::r--
- mask 只影響除所有者和other的之外的人和組的最大權限
- Mask 需要與用戶的權限進行邏輯與運算后,才能變成有限的權限(Effective Permission)
- 用戶或組的設置必須存在于mask 權限設定 范圍內才會 生效
- setfacl -m mask::rx file
- --set 選項會把原有的ACL 項都刪除,用新的替代,需要注意的是一定要包含UGO 的設置,不能象-m一樣只是添加ACL
備份和恢復ACL
在cp -p 的復制上時,就是帶有特殊權限的復制
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R --set-file=acl.txt /tmp/dir1
setfacl --restore acl.txt
getfacl -R /tmp/dir1