一、简介和开启
ACL主要解决所有者、所属主、其他人,权限不满足的情况下,产生的控制;
在使用ACL之前,需要查看分区ACL权限是否开启
执行命令:dumpe2fs -h /dev/sda3
dumpe2fs 命令是查询指定分区详细文件系统信息的命令
选项: -h 仅显示超级块中信息,而不显示磁盘块组的详细信息
执行结果:
临时开启分区ACL权限,重启系统失效
mount -o remount, acl/
复制代码
重新挂在根分区,并加入acl权限
永久开启分区ACL权限
vi /etc/fstab (开机自动挂载文件,在根分区后面的defaults 增加,acl)
在UUID=xxxx / ext4 defaults,acl
修改完之后,重启或者重新挂载文件,mount -o remount /,使其生效
二、查看和设定ACL权限
查看ACL权限
语法:getfacle 文件名,查看acl权限
设置ACL权限
语法:setfacl [选项] 文件名
选项: -m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设置默认ACL权限
-k 删除默认的ACL权限
-R 递归设定ACL权限
模拟一个开发场景,在/var下新建www文件夹(权限为770),所属主权限rwx,所属组设置为php组,组名为phpproject,权限为rwx,其他人没有权限。
特殊需求,新增一个前端用户web1,权限为r-x。
cd /var
mkdir www
新建组
groupadd phpproject
新建2个用户,phper1,phper2
useradd phper1
useradd phper2
将2个用户移到phpproject组中
gpasswd -a phper1 phpproject
gpasswd -a phper2 phpproject
设置www文件夹权限为770
新增一个web1用户
useradd web1
给web1用户设置acl权限,给web1用户赋予r-x权限,使用“u:用户名:权限”格式,如果是组,是用g:组名:权限
setfacl -m u:web1L:rx www
复制代码
设置完的效果,后面有个+
查看www目录,acl权限
给用户组设定ACL权限
语法:setfacl -m g:组名:权限(rwx) 文件名
使用:g:组名:权限 格式
三、最大有效权限mask和删除ACL权限
最大有效权限mask
mask用来指定最大有效权限,如果我给用户赋予了ACL权限,用户真正的权限是需要和mask权限“相与”的,理解为交集
修改最大有效权限
setfacl -m m:rx 文件名
解释:设定mask权限,使用m:权限的格式
删除ACL权限
删除指定用户的acl权限
语法:setfacl -x u:用户名 文件名
删除指定用户组的acl权限
语法:setfacl -x g:组名 文件名
删除文件的所有ACL权限,删除用户和用户组
语法:setfacl -b 文件夹
四、默认ACL权限和递归ACL权限
递归ACL权限
语法:setfacl -m u:用户名:权限 -R 文件名
默认ACL权限
如果在父目录设置了默认的ACL权限,新建子文件都会继承该ACL权限
语法:setfacl -m d:u:用户名:权限 文件名