Linux 笔记分享九:ACL 权限

一、ACL权限简介和开启

Linux下用户对文件的操作权限有r-读w-写x-可执行三种,而对linux下的文件而言,用户身份分为:所有者,所属组,其它人; 且文件的所有者,所属组都只能是一个,所以在对文件分配用户的使用权限时,只能对这三种身份进行分配rwx权限,Linux 主要作为服务器系统使用,用户众多;所以在实际使用场景中,这三种身份并不能很好地实现资源权限分配问题,所以就有了ACL权限

ACL权限就是为了解决linux下三种身份不能满足资源权限分配需求的问题的

file

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 协议》,转载必须注明作者和本文链接
时空扭曲, 到底长啥样.
讨论数量: 1

very good

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!