您的位置:首页 > 运维架构 > Linux

默认ACL权限和递归ACL权限-linux35

2015-12-31 07:57 260 查看

默认ACL权限和递归ACL权限

上节我们学习的是ACL最大有效权限和删除ACL权限,今天我们继续学习ACL默认权限和递归ACL权限
一、递归ACL权限
递归的意思在所有编程语言里都是代表设置了父目录的同时子目录或子文件都同时生效。

1、那么ACL权限递归同样道理,就是在设置父目录ACL权限时,所有子文件和子目录也同时会拥有相同的ACL权限。
[root@localhost ~]# setfacl -m u:用户名:权限 -R 目录名
例如:
我们在/project目录里新建两个用户,然后我们用
[root@localhost ~]# setfacl -m u:st:rx /project/
这样来设置这个st用户对这个目录的ACL权限,我们可以查看目录里面的文件的权限是不是没有ACL权限啊,如图:



也就是我们只给目录设置了ACL,而里面的文件没有随着父目录而改变。

那么我们按照递归的方法来设置这个目录:
[root@localhost ~]# setfacl -m u:st:rx -R /project/
如图:



看,是不是这里目录里面的两个文件也都具有了ACL权限了啊。
二、默认ACL权限
上面我们利用递归的方法设置了/project目录的ACL权限后里面的文件也都跟着具备了ACL权限。
但是这个时候如果我在目录里面再从新建一个文件,那么这个文件是不会有acl权限的,因为他是在设置了父目录的acl权限后才建立的。如图:




那么这样一来如果我们每新建一个文件都需要从新设置一下ACL权限,这样岂不是很麻烦,所以就用到了ACL的默认权限。

默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限。
设置方法:
[root@localhost ~]# setfacl -m d:u:用户名:权限 目录名
这样就解决了上面的问题。
好的,那么我们来设置一下:
[root@localhost ~]# setfacl -m d:u:st:rx /project/
然后我们再新建一个文件看看是不是他也同时具备了ACL权限。
如图:



但是大家会发现两个问题:
首先里面的cde文件还是没有ACL权限,为什么呢?因为他是在执行ACL默认权限命令之前设置的,所以没有起作用,设置默认ACL权限只对新建的用户有作用。
其次,我们利用递归命令设置的ACL权限时,子文件会同时具备父目录的执行权限。因为递归的作用就是同时给父目录和子目录或子文件同时设置权限,所以同时给目录里的文件也设置了rx权限。而设置了默认的ACL权限后,新建的文件是不具备执行权限的。因为任何新建的文件默认都是不带执行权限的。

另外还有一点需要注意,就是这两个命令都是针对目录的,是不能给文件设置的,因为文件是不具备子文件的。

本教程原创作者:mageo,出自每集博客,尊重作者劳动,转载请注明出处:http://www.ql2015.cn,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  零基础学习Linux