本章主要介绍 ACL 权限
ACL 的用法
ACL 的 mask 权限
设置默认权限
10.1 ACL 介绍及基本用法
前面讲权限时,是对u、g、o设置权限的,现在假如有图10-1所示的需求。
有一个目录aa,要求tom、bob、mary具有不同的权限,利用前面讲过的知识是完全可
以实现的。
所有者设置为tom,把所有者的权限设置为rw。
所属组设置为bob,把所属组的权限设置为r。
mary使用o的权限,把 o 的权限设置为rx。
但是如果有四个或更多个用户,要求设置不同的权限,如图10-2所示。
利用前面讲的知识就无法实现了,要实现对具体用户设置权限,我们可以考虑ACL。
ACL的用法如下
在/opt下创建一个文件/opt/aa.txt
在/opt下创建一个文件/opt/aa.txt
对于 blab 用户来说,只能使用o的权限,所以 blab 是不能往此 aa.txt 中写内容的。打
开一个新标签使用 blab 登录,然后在 aa.txt 中测试写
此时是写不进去的。使用root用户对 aa.txt设置ACL权限,首先查看aa.txt是否具有ACL
权限,查看的命令是getfacl,
如果不想结果中显示前面几行带有#的,可以加上-c选项
[root@localhost opt]# getfacl -c aa.txt
设置aa.txt的ACL权限,使得 blab 用户对 aa.txt 只具有写权限而没有读权限。
[root@localhost opt]# setfacl -m u:bdqn:-w- aa.txt
使用blab用户进行测试,命令如下
[bdqn@localhost ~]$ echo aaa > /opt/aa.txt
[bdqn@localhost ~]$ cat /opt/aa.txt
可以看到,blab 用户对/opt/aa.txt具备写权限,但是没有读权限。
为aa.txt设置ACL 权限,让 blab 用户具备读写权限,命令如下
可以看到,blab 用户对 aa.txt 具有 rw 权限了,然后使用 blab 用户往aa.txt中写数据,如
下所示
已经成功写进去了,也能看到文件中的内容。
如果对组设置ACL权限,如设置aa.txt的ACL权限,让tom组的用户具备读写权限,命令
如下
[root@localhost opt]# setfacl -m u:tom:rw- aa.txt
下面手动将aa.txt 的mask权限设置为r--。
刚才讲mask 设置的是 ACL USER、ACL_GROUP_OBJ和ACL_GROUP中的最大权限,所
以即使blab用户的权限有rwx,但是生效的只有r权限,即上面结果中#effective:r--显示的,
因为最大权限被限定在r了。
如果将 mask权限设置为---呢?
因为mask 是最高权限,所以上面显示的ACL_USER、ACL_GROUP_OBJ和ACL_GROUP
实际能使用的权限均为---。下面测试 lduan用户是否能读和写aa.txt 的内容,如下所示。
可以看到,bdqn用户能读但是不能写,这与mask权限---相嗓,因为这里又涉及了other
权限,前面可以看到o的权限为r,所以blab用户是能读但是不能写的。
如果给o设置一个写权限,命令如下
则bdqn用户可以往aa.txt中写内容。
这里语法中的d(default)是默认的意思。为了更好地解释,我们看下面的例子。
创建目录/opt/xx,为了测试方便,可以设置ACL 权限,让tom具有rwx权限,命令如
下。
[root@localhost opt]# setfacl -m u:tom:rwx xx
[root@localhost opt]# getfacl -c xx
现在设置bdqn对目录xx的默认ACL权限为rwx,命令如下
[root@localhost opt]# setfacl -m d:u:bdqn:rwx xx
可以看到,blab对/opt/xx/aa.txt具有默认ACL 权限 rwx。因为除了后期修改权限,创
建文件时不会出现x权限,所以这里出现了#effective:rw-。
然后blab用户往/opt/xx 中写入内容,
[bdqn@localhost ~]$ touch /opt/xx/bb.txt
会发现权限不够,写不进去,说明默认权限是对/opt/xx中新创建的目录或文件,并非
对/opt/xx本身设置权限。
取消默认权限,命令如下
[root@localhost opt]# setfacl -x d:u:bdqn xx
取消默认权限之后,以后在/opt/xx中新创建的文件对lduan用户不会有默认ACL权限但是
已经存在的文件的默认权限也不会取消。
清空/opt中的内容,命令如下