ACL
訪問控制列表,并不是所有的Linux文件系統,都支持ACL。FAT文件系統也不支持ACL
ACL文件系統中,不支持chmod等命令。同時不能更改文件權限。不存在文件權限。
問題提出
只讓wang用戶,對該文件不能夠訪問,同時不影響其他任何用戶對該文件的操作。
ACL特點
針對單一用戶或群組,單一文件或目錄,進行rwx權限設置
默認屬性(mask):設置在目錄下新建文件/目錄時設置新數據的默認權限。
查看設備是否支持ACL
啟動ACL
查看是否支持ACL
1:使用mount命令查看
括號中不包含acl,所以列出的設備中,目前不支持acl
2:使用dumpe2fs ,由superblock來查看是否支持acl
開啟ACL
方法1:
方法2:
直接修改文件/etc/fstab,在文件尾部加入:
設置&查看ACL
ACL的設置和查看,主要都通過命令getacl和setacl
命令setacl
設置后,權限部分為-rwxrwxrwx+,最后一位為加號,就是有acl設置的。
普通格式:
setfacl [-bkRd] [{-m | -x} acl參數] 目標文件名 setfacl --set 完整ugo權限+acl參數 filename // 重置文件權限
選項說明:
-m 設置后續的acl給文件使用,不可與-x連用 -x 刪除后續的acl
-k 刪除默認的acl參數 -R 遞歸設置acl參數 -d 設置默認acl參數,只對目錄有效,新建數據會引用此默認值,舊的數據不會改變原來的權限
ACL參數格式
針對用戶的:
u:[用戶賬號列表]:[rwx]
針對組的:
g:[用戶組列表]:[rwx]
迭代修改目錄中:
setfacl -Rm g:sale
s:rwX directory
//X是保留原來的x權限狀態
根據某文件的acl情況,更改另一文件的acl情況
setfacl -M file1.acl file2.acl | dir
命令getacl
查看acl
語法格式:
getacl filename
getacl和setacl實例
1:getacl實例
2:刪除文件f1上的acl權限
3:清空f1文件上的所有權限:
4:批量添加acl權限
1:新建文件acl1
2:將以下內容寫入:
u:wang:0
u:wangcai:rw
g:it:w
3:執行
5:批量刪除某兩個用戶的權限:
1:新建文件acl2
2:在acl2中寫入下面內容:
u:wang
u:wangcai
3:執行:
6:復制file1的acl權限給file2
getfacl file1 | setfacl –set-file=- file2
7:對目錄設置默認acl權限
新的文件會有,舊的文件并不改變
-d選項是設在directory上的,但是文件夾本身沒有acl,只是對文件夾內新的文件有影響:
mask in acl:
說明:
-
mask的意義:安全邊界
-
mask是一條高壓線,除了owner和other,其他用戶都將受影響
-
mask需要與用戶或組的權限進行邏輯“與”運算后,才能變成有效的權限
-
開啟了文件的acl權限之后,設置組的權限,就是在設置mask的權限
解析:上圖中,mask的權限為–x,那么user:wang:rwx中,只有x是有效的,rw都是無效的,所以有效權限(effective:–x),group::r–中,r是無效的,但是因為group也沒有x的權限,所以x也是無效的。
-
一般的操作,如cp(需要加-p)和mv,都會保留acl權限,但是tar不會,具體見實例3:備份
設置
用setfacl -m m::rw f1來修改mask
setfacl -m mask::rw f1
實例1
這個實例中,當添加acl權限后,文件f1的所屬組權限,已經不是原來的那個權限了,而是mask的權限
實例2:
實例3:備份
使用tar等常見的備份工具是不會保留目錄和文件的acl信息的。
那么如何在tar的同時保留acl信息呢?
需要在備份的同時,單獨備份acl信息。
1. 打包tar文件后
2. 備份acl權限:getfacl -R wu > acl.txt
3. 恢復tar文件后
4. 恢復acl權限:
setfacl -R -b wu
setfacl -R –set-file=acl.txt wu
上圖中,第一條是在打包tar的時候用來備份acl權限的
后面三條是在恢復時用的
原創文章,作者:m20-吳清玲,如若轉載,請注明出處:http://www.www58058.com/29165
默認ACL權限給了x,文件也不會繼承x權限