Linux 笔记分享九:ACL 权限
一、ACL权限简介和开启
Linux下用户对文件的操作权限有
r-读
,w-写
,x-可执行
三种,而对linux下的文件而言,用户身份分为:所有者,所属组,其它人; 且文件的所有者,所属组都只能是一个,所以在对文件分配用户的使用权限时,只能对这三种身份进行分配rwx权限,Linux 主要作为服务器系统使用,用户众多;所以在实际使用场景中,这三种身份并不能很好地实现资源权限分配问题,所以就有了ACL权限ACL权限就是为了解决linux下三种身份不能满足资源权限分配需求的问题的
1、查看分区ACL权限是否支持
ACL权限是作用于分区的一种权限
例如:
dumpe2fs -h /dev/sda5
-h: 仅显示超级块中信息,而不显示磁盘块组的详细信息
返回:
... ...
Default mount options: user_xattr acl
... ...
如果看到上面这一行含有acl,证明分区支持ACL权限
- 如果不支持ACL权限
临时开启根分区ACL权限支持
mount -o remount,acl /
永久开启根分区ACL权限支持
vim /etc/fstab
修改成:
... ...
UUID=xxxxx-xxxx-xxxx / ext4 defaults,acl 1 1
... ...
加入
,acl
重新挂载:
mount -o remount /
其实
defaults
默认带有ACL权限,加入ACL是明确指定开启ACL权限
二、ACL权限查看与设定
1、getfacl
查看ACL权限
getfacl 文件名
2、sefacl
设定ACL权限
setfacl 选项 文件名
- 选项
-m: 设定ACL权限
-x: 删除指定的ACL权限
-b: 删除所有的ACL权限
-d: 设定默认ACL权限
-k: 删除默认ACL权限
-R: 递归设定ACL权限
例如:
setfacl -m u:lw:rx /home/av
-m
选项后面跟用户或组标识符(u|g):用户或组:执行的权限
- 注意
当文件或目录加入acl权限后,
ll
查看命令会看到标示ACL的点变成加
三、最大有效权限和删除ACL权限
1、最大有效权限
当一个目录或文件加入ACL权限后,用
getfacl
看到多出一个mask权限,这个就是最大有效权限即,mask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask的权限"逻辑与"才能得到用户的真正权限
- 逻辑与
A | B | and |
---|---|---|
r | r | r |
r | - | - |
- | r | - |
- | - | - |
2、修改最大有效权限
setfacl -m m:rx 文件名
设定指定文件的mask权限为
r-x
。使用m:权限
格式
- 注意
这个马赛克权限一般不用,除非ACL非常多时
3、删除ACL权限
setfacl -x u:lw 文件或目录
4、删除所有ACL权限
setfacl -b 文件或目录
四、ACL默认权限与递归权限
1、递归ACL权限
递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限
setfacl -m u:用户名:权限 -R 目录文件
例如:
setfacl -m u:lw:rx -R /home/av/
- 权限溢出
目录赋予执行权限时,递归到文件也会获得执行权限,这样就造成了权限溢出,没有办法解决
因此,ACL权限尽量少用,能用普通权限解决的就用普通权限解决
- 目录和文件马赛克权限
目录的是
rwx
文件的是
r-x
- 注意
递归权限仅能赋予目录,不能赋予文件
2、默认ACL权限
默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有==新建==的子文件都会继承父目录的默认ACL权限
setfacl -m d:u:用户名:权限 目录文件
例如:
setfacl -m d:u:lw:rw /home/av/
本作品采用《CC 协议》,转载必须注明作者和本文链接
very good