linux下acl权限详解

安装软件包

yum install -y acl

配置acl权限
用于acl权限管理的命令主要有两个:

setfacl          //设置acl权限
getfacl          //查看acl权

首先来看setfacl
常用参数:

-b:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留。
-d:设定默认的acl规则
-R:递归的对所有文件及目录进行操作。
-m:修改文件或目录的acl规则。
-x:删除指定acl规则。

以上只列出常用参数,详细命令帮助可参考:http://man.linuxde.net/setfacl
举个例子:想让user1这个用户对~/test目录拥有全部权限,除了修改所有者或所属组之外还能怎样呢?
且往下看。

setfacl -Rm u:user1:rwx ~/test             //使user1用户对test目录拥有全部权限。

执行以上命令后user1用户即可任意操作~/test目录。
来看一下这条命令,setfacl,设置acl权限、参数R代表递归应用,m修改权限、u代表用户,如果想赋予某个组acl权限就用g,:后边接的要赋予acl权限的用户名或组名(不填则修改所有者或所属组的acl权限),紧接着下一个冒号后面跟的就是要赋予这个用户的权限了、最后接要操作的目录或文件名,就这么简单。
再来看一个例子:

setfacl -m d:u::rwx ~/test                //为test目录下新建的文件或目录设置默认acl权限,对所有用户生效

如果写成这样:

setfacl -m d:u:user1:rwx ~/test

这条命令执行后可以达到什么目的呢?我猜,聪明的读者一定猜到了:是给user1创建的文件或目录设置默认acl权限。
如果你是这样想的,那么恭喜你,猜错了。
这条命令实际的意义其实是给所有用户创建的文件或目录都加上user1这个用户的rwx的acl权限~
最后再来看下如何删除acl权限

setfacl -x d:u:user1 ~/test              //删除~/test目录中关于user1的默认acl权限
setfacl -b ~/test                        //删除~/test目录上所有的acl权限

查看acl权限
查看acl权限使用getfacl命令

getfacl ~/test                           //查看~/test目录的acl权限

会输入类似如下内容

另外,当我们执行ls -l时会发现,拥有acl权限的文件或文件夹其linux默认权限后面多一个“+”号。

最后需要注意的是:linux默认权限是优于acl权限的,就是说当liux默认权限和acl权限同时存在时,系统会优先考虑linux默认权限。

Leave a Reply

Your email address will not be published. Required fields are marked *