首页 > 服务器学习 > Linux > linux中的ACL权限
2016
12-16

linux中的ACL权限

在Linux的权限中只有所有者,所属组和其他人三类,但是有些特殊情况下这三类权限的满足不了我们的需求,比如讲课,老师是教学目录的所有者,拥有读写执行的权限,学员和老师同时属于一个所属组textg,给所属组读写和执行的权限之后学院也拥有了全部权限,为避免别的人员看到教学目录里的内容,其他人权限设为0,现在又来了一个试听学员,只想给他读和执行权限,不给写权限,这时三类权限就满足不了我们的需求了,ACL权限就是解决这个问题,ACL权限是不考虑所有者,所属组和其他人这个定义,只考虑针对某个用户针对某个目录或文件单独的设定独立的权限

查看分区ACL权限是否开启(一般情况下都支持)

dumpe2fs -h /dev/sda3    (/dev/sda3可以用df -h查看根分区得到)

查看信息Default mount options(默认挂载选项)的值是否是user_xattr acl,是则支持ACL权限。如果不支持:

1>临时开启分区ACL权限:mount -o remount,acl /:重新挂载跟分区,并挂载加入acl权限

2>永久开启分区ACL权限:修改/etc/fstab文件中的根目录对应的后面的defaults改成defaults,acl然后重新挂载文件系统mount -o remount /   或者重启系统即可。现在的Linux系统一般默认状态就是开启ACL权限的。

查看指定文件ACL权限命令:getfacl 文件名

如果一个目录或文件设定的ACL权限,那么在使用相应命令查看权限(如ll命令)的时候或在权限后面多一个"+",表示该目录或文件设定了ACL权限。

设定ACL权限命令:setfacl [-选项] 文件名

-m:设定ACL权限,setfacl -m u:用户名:[rwx] 文件名:[rwx]中如果没有权限不写,不要用"-"号代替,如只有读和执行权限则写成rx即可。

给指定的用户针对指定的目录或文件设定用rwx表示的权限,u换成g,用户名换成组名表示给指定的用户组针对指定目录或文件设定相应的权限

-x:删除指定的ACL权限:setfacl -x u:用户名 文件名或setfacl -x g:用户组名 文件名

-b:删除所有的ACL权限:setfacl -b 文件名。

d:设定默认ACL权限(只能给目录设定)

默认ACL权限是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限,在设定默认ACL权限之前建立的子文件不继承

设定默认ACL权限语法:setfacl -m d:u:用户名:[rwx] 文件名

k:删除默认ACL权限

-R:递归设定ACL权限:setfacl -m u:用户名:[rwx] -R 文件名

最大有效权限:使用getfacl 文件名,查看到的信息里面有一个mask,是用来指定最大有效权限的,如果给用户或用户组赋予了ACL权限,是需要和mask的权限"相与"之后才是设定的用户或用户组真正获得的权限。

设定最大有效权限:setfacl -m m:[rwx] 文件名。

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。