13、权限管理之ACL权限
ACL权限(解决所有者、所属组、其他人命令不足情况):
1 ACL简介与开启
1.1: 什么是ACL权限:当一个临时其他用户A想对/data/test(750权限)拥有x权限,系统又不想把test所有者变为这个A也不想将A加入test所属组,那就单独针对这个文件夹给A设置ACL权限的x,他虽然不是该文件的所有者、也不属于所属组,他就会有x权限,这就是ACL权限存在的意义
1.2、查看分区命令:df -h
1.3、想要设置ACL权限,需要分区对他支持,要查看分区是否开启ACL权限:dumpe2fs -h /dev/sdax,如果Default mount options中有acl,说明支持acl;
如果不支持想要设置acl权限(了解就好了,现在一般linux都默认支持acl权限):
1.3.1 临时开启分区acl权限:想要临时开启acl权限:mount -o remount ,acl / (挂载或者重新挂在 / 分区,并给上acl权限)
1.3.2 永久开启分区acl权限:vim /etc/fstab(系统开机自动挂载文件,不会有光驱,因为光盘不一定在启动系统时候光驱里面都有光盘,如果没有光盘启动就崩溃) ,在文件格式后面一列,defaults加上一项acl用,隔开,就变为 “defaults,acl”,要重启,如果不想重启就重新挂在一次刚才修改的分区 mount -o remount / 才会生效
2 ACL查看与设定
2.1:查看文件ACL权限:getfacl 文件名
2.2:设置文件ACL权限:setfacl 文件名 (设置完acl权限,ls -l查看该文件时候,权限最后一项多个“+”,证明这个文件除了普通权限还有acl权限)
2.2.1 : -m 设定ACL权限:
2.2.2 : -x 删除指定的ACL权限
2.2.3 : -b 删除所有的ACL权限
2.2.4 : -d 设定默认的ACL权限
2.2.5 : -k 删除默认的ACL权限
2.2.6 : -R 递归设定ACL权限
设置例子:
给单个用户设置acl权限 :set -m u:st:rx /project //给st用户,在/project(770权限)设置了acl权限,现在即使/project的所有者不是st,st也不在/project所属组中,st用户依然对/project有rx权限,【注意】:u前面没有"-",我在操作时候加了“-”报错
给组设置acl权限:set -m g:group1:rx /project //此时所有grou1组的用户也都有了rx权限 ,即使这个组不是/project所属组 【注意】:g前面没有"-",我在操作时候加了“-”报错
获取例子:
获取/project的acl权限:getfacl /project //会报一个错,不支持绝对路径"/",不影响不需要管
3 ACL最大有效权限与删除
3.1 最大有效权限mask: getfacl 文件名 列出的内容会有一个mask权限,当你给某个用户或者某个组设置了acl权限为rx,mask权限为"-wx",那这个用户不会有r的acl权限,只会有x的acl权限,设置acl权限与mask取交集的权限赋予用户或者组,【注】mask最大有效权限不会影响所有者,会影响所属组与acl权限用户
3.2 修改最大有效权限 setfacl -m m:rx /project 这时候mask就变为rx了,【注】mask最大有效权限不会影响所有者,会影响所属组与acl权限用户
3 删除ACL权限
删除某个人的ACL权限:setfacl -x u:st /project
删除群组的ACL权限:setfacl -x g:group1 /project
删除所有ACL权限 :setfacl -b /project
4 ACL递归权限和默认权限(只针对目录)
4.1 递归权限: setfacl -m u:st:rwx -R /project //-R位置不能变,linux一般选项位置都可以任意,这里不行
4.2 默认权限: 当设置了递归ACL权限之后,在/project新创建的文件,针对st又没有rwx权限了,为了让设置了递归ACL权限之后在/project下新建的文件遵守/project的acl权限,就要执行命令: setfacl-m d:u 、setfacl-m d:g (真针对新来的,不针对老的文件,老的文件只能用递归处理),也可以跟其他合着用:setfacl -m d:u:st:rwx -R /project 、setfacl -m d:g:roup1:rwx -R /project