1.ACL权限的作用

  ACL是Access Conrol List的缩写,ACL权限的主要作用是为了解决Linux系统当中,owner、group和others的权限不够用的问题。假设有这样一个目录/home/work,它的所有者是root,所属组是sN,所有者和所属组拥有的权限均为rwx,others什么权限也没有。那么如果还有一个用户st需要查看和执行这个目录下的文件,那该怎么设定权限呢?这个时候,owner、group和others没法解决问题,需要使用ACL权限来对用户st进行特别处理。

2.查看分区是否支持ACL权限

  要使用ACL权限,首先文件系统必须支持ACL权限。事实上,目前绝大部分的文件系统都是支持ACL权限功能的。使用下面这条指令可以查看看文件系统是否支持ACL。
dumpe2fs -h 设备名
下面是执行dumpe2fs -h /dev/sda6的结果,/dev/sda6挂载在/上。

Filesystem volume name:   <none>
Last mounted on: /
Filesystem UUID:          f233fe5f-7567-44ca-adb8-1865961d02c7
Filesystem magic number:  0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem flags:         signed_directory_hash
Default mount options:    user_xattr acl
....(后面省略)....

从第八行可以看到,文件系统支持ACL权限。

3.开启ACL权限

(其实,centos在默认情况下已经加入了acl支持)

3.1临时开启ACL

mount -o remount,acl /

3.2永久开启ACL

修改/etc/fstab

UUID=f233fe5f-7567-44ca-adb8-1865961d02c7 / ext4 defaults,**acl** 1 1

重新挂载或者重启系统生效。

3.设置ACL权限,setfacl

setfacl -m u:用户名:rx 目录或文件
setfacl -m g:组名:rx 目录或文件
setfacl -m u:st:rx work/
-m:表示添加acl权限
u:st:rx 表示用户是st,权限为rx,
work 这是目录

4.查看ACl权限,getfacl

getfacl 目录或文件名可以查看acl权限
例如:

5.最大有效权限

  在上面getfacl指令返回的结果当中有一行mask:rwx,给某个用户设置的ACl权限需要与mask设置的权限相与,得到的权限才是用户得到的真正的权限。上面的用户得到的实际权限是rx,因为r_x&&rwx=r_x

6.删除ACl权限

setfacl -x u:用户名:rx 目录或文件
删除用户的ACl权限
setfacl -x g:组名:rx 目录或文件
删除组的ACL权限
setfacl -b 目录或文件名
删除所有的ACL权限

7.ACL默认权限和递归ACL权限

递归ACL权限
setfacl -m u:用户名:rx -R 目录
递归设置ACL权限
默认ACL权限
setfacl -m d:u:用户名:rx -R 目录