文件的權限詳解(二)ACL篇
ACL訪問控制列表作用:
1、 ACL:Access Control List,實現靈活的權限管理
2、 除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限
3、 CentOS7.0默認創建的xfs和ext4文件系統有ACL功能。
4、 CentOS7.X之前版本,默認手工創建的ext4文件系統無ACL功能。需手動增加:
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt
5、 ACL生效順序:所有者,自定義用戶,自定義組,其他人
ACL使用兩個命令來對其進行控制
getfacl:取得某個文件/目錄的ACL設置項目
setfacl:設置某個文件/目錄的ACL設置項目
setfacl命令
作用:設置文件訪問控制列表的命令
語 法:
格 式1:setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file…
格 式2:setfacl –restore=file
參 數:
-
-m:設置后續acl參數
setfacl -m u:wang:rwx file|directory 設置wang用戶對文件或目錄具有讀寫執行權限 setfacl -m g:salesgroup:rw file| directory 設置組用戶對文件或目錄的讀寫執行權限
-
-x:刪除后續acl參數
setfacl -x u:wang file |directory 刪除wang用戶對文件的訪問限制
-
–b,–remove-all:刪除所有擴展的acl規則,基本的acl規則(所有者,群組,其他)將被保留。
setfacl -b file1清除所有ACL權限
-
–k,–remove-default:刪除缺省的acl規則。如果沒有缺省規則,將不提示。
setfacl -k dir 刪除默認ACL權限
-
–m:重新計算有效權限,即使ACL mask被明確指定。
-
–d,--default:設定默認的acl規則;以后這個目錄下創建的文件都將具有此權限
setfacl -m d:u:wang:rx directory
-
-R,–recursive:遞歸的對目前該目錄下所有文件及目錄進行操作。
setfacl -Rm g:sales:rwX directory
-
– getfacl file1 | setfacl –set-file=- file2 復制file1的acl權限給file2
-
–restore=file:從文件恢復備份的acl規則(這些文件可由getfacl -R產生)。通過這種機制可以恢復整個目錄樹的acl規則。此參數不能和除–test以外的任何參數一同執行
-n ,–no-mask:不要重新計算有效權限。setfacl默認會重新計算ACL mask,除非mask被明確的制定。
-L ,–logical:跟蹤符號鏈接,默認情況下只跟蹤符號鏈接文件,跳過符號鏈接目錄。
-P ,–physical:跳過所有符號鏈接,包括符號鏈接文件。
–test :測試模式,不會改變任何文件的acl規則,操作后的acl規格將被列出。
—
標識命令行參數結束,其后的所有參數都將被認為是文件名。
–
如果文件名是-,則setfacl將從標準輸入讀取文件名。
其他:
以文本文件方式批量設置acl權限 -M
[root@localhost qiuzhaoxian]# cat acl.test u:qzx:--- u:user1:rwx u:user2:r u:user3:7 g:gentoo:0 g:user4:rx [root@localhost qiuzhaoxian]# setfacl -M acl.test 123 [root@localhost qiuzhaoxian]# getfacl 123 # file: 123 # owner: xiaoming # group: xiaoming user::rwx user:qzx:--- user:user1:rwx user:user2:r-- user:user3:rwx group::rwx group:user4:r-x group:gentoo:--- mask::rwx other::---
– X 以文本方式批量刪除文件acl(本來有刪除對應的acl權限)acl權限
[root@localhost qiuzhaoxian]# cat bbb.test u:user1 u:user2 u:user3 [root@localhost qiuzhaoxian]# setfacl -X bbb.test 123 [root@localhost qiuzhaoxian]# getfacl 123 # file: 123 # owner: xiaoming # group: xiaoming user::rwx user:qzx:--- group::rwx group:user4:r-x group:gentoo:--- mask::rwx other::---
以參考文件的acl權限設置目標文件
[root@localhost qiuzhaoxian]# mkdir 456 [root@localhost qiuzhaoxian]# getfacl 123 | setfacl --set-file=- 456 [root@localhost qiuzhaoxian]# getfacl 456 # file: 456 # owner: root # group: root user::rwx user:qzx:--- group::rwx group:user4:r-x group:gentoo:--- mask::rwx other::---
注:setfacl –set-file=– 這里的=后邊的-表示從標準輸入讀取文件
這里的- 可以換成文件(當備份恢復時用)
–set選項會把原有的ACL項都刪除,用新的替代,需要注意的
是一定要包含UGO的設置,不能象-m一樣只是添加ACL就可以.
如:
setfacl –set u : : rw , u : qzx: rw , g : : r , o::- file1
備份和恢復ACL
#getfacl -R /tmp/dir1 > acl.txt#setfacl -R -b /tmp/dir1 #setfacl -R --set-file=acl.txt /tmp/dir1#getfacl -R /tmp/dir1
關于mask
mask只影響除所有者和other的之外的人和組的最大權限
Mask需要與用戶的權限進行邏輯與運算后,才能變成有限的權限
一旦設置acl mask后 所屬組權限就變成mask權限
也就是說用chmod g=wx 文件 那么mask也將編程wx
用戶或組的設置必須存在于mask權限設定范圍內才會生效。
設置方式
setfacl -m mask::rx file
原創文章,作者:qzx,如若轉載,請注明出處:http://www.www58058.com/28909