ACL主要是针对单一用户、单一文件或目录来进行r、w、x的特殊权限,实现灵活的权限管理,除了文件的所有着,所有组和其他人,可以对更多用户设置权限。

centos7默认创建的xfs和ext4文件系统具有ACL功能。

centos6以下(包含)的版本,默认手工创建的ext4文件系统无ACL功能,手动添加的代码如下:

1.首先可以先查看下之前可有安装过acl,如下图。

2.安装代码:tune2fs -o acl /dev/sda1

3.若是安装后想卸载的代码:tune2fs -o ^acl /dev/sda1

4.无论是安装还是卸载都可用:tune2fs -l /dev/sda1|grep option该行命令通过管道过滤查看acl是否安装。

以下示例

如在app目录下存在一testdir目录,先查看其对不同用户所开放的权限,用ll命令查看现有权限为:rwxr-xr-x.

drwxr-xr-x. 3 root root  4096 Jul 21 16:37 testdir

如现有一用户刘备,为该用户单独设置一些权限用setfacl命令设置格式如下。

  置默认权限

   setfacl -Rm u:username:rwx 要设置的文件名/  设置当前的权限 (R表示递归,在该可能存在别的文件 m为固定格式)

   setfacl -Rm d:u:username:rwx 要设置的文件名/ 设置未来文件的权限(d 为默认,可表未来)

设置acl权限后可以清晰的看到下图标示处, 由符号点变成符号+,说明acl设置成功。

               

    setfacl --Rm u:liubei testdir/   对指定的文件或目录设置用户的acl权限

    setfacl --Rm g:weiguo testdir/ 对指定的文件或目录设置用户组的acl权限

查看文件的acl列表命令用getfacl,格式为getfacl filename,具体格式看下图。

我们设置成功后可以测试下,首先切换用户为liubei看所有者和所有组在不是刘备的情况下看是否可以创建成功,acl的权限设置是否发挥作用。

根据上图明显查看到acl的设置生效,在所有者和所有者不是liubei的情况下文件创建成功。    

ACl权限判断顺序

  在文件的权限设置过程中存在权限的冲突,判断顺序为:owner > acl user > group > other。

如把文件的owner改为liubei,权限设置命令“chmod u=--- testdir/”,设置成功后登录liubei用户后在testdir目录创建文件看是否成功,

根据下图实验说明owner权限最大。

删除用户或组的acl权限,示例如下。

setfacl -x u:liubei testdir/

setfacl -x u:guanyu testdir/

setfacl -x g:weiguo testdir/

删除所有权限,清空acl属性

setfacl -b testdir

mask 权限的阀值 即权限上限

setfacm -m m:rwx testdir或 chmod g=rwx testdir

1.备份已存在的acl权限列表设置,不支持在线存储。

2.利用tar备份文件。

 tar cvf filename.tar *

3.恢复文件

 tar xvf filename.tar

4.恢复acl

 setfacl --restore /root/aa