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.178linux.com/29165
评论列表(1条)
默认ACL权限给了x,文件也不会继承x权限