首页 > 代码库 > 递归acl权限和默认acl权限

递归acl权限和默认acl权限

递归acl权限,是指父目录在设定acl权限时,所有子文件和子目录也会拥有相同的acl权限.(主要针对目录下已有的文件)

1 [vampire@LAMP vampire]$ ll
2 total 0
3 -rw-rw-r-- 1 vampire vampire 0 May 18 22:11 anothertest.file
4 -rw-rw-r-- 1 vampire vampire 0 May 18 22:11 test.file

可以看到当前vampire目录下的两个文件都没有acl权限
现在使用setfacl设置目录vampire的acl递归权限

 1 [vampire@LAMP vampire]$ cd ..
 2 [vampire@LAMP tmp]$ setfacl -m u:iaknehc:rx -R vampire
 3 [vampire@LAMP tmp]$ ll
 4 total 4
 5 drwxrwxr-x+ 2 vampire vampire 4096 May 18 22:11 vampire
 6 [vampire@LAMP tmp]$ cd vampire
 7 [vampire@LAMP vampire]$ ll
 8 total 0
 9 -rw-rwxr--+ 1 vampire vampire 0 May 18 22:11 anothertest.file   //已存在的文件都会继成到父目录的acl权限
10 -rw-rwxr--+ 1 vampire vampire 0 May 18 22:11 test.file

可以看到设置到目录vampire上的acl权限,同样作用于目录中文件上.
该命令只设置的acl权限只能作用于在该命令执行时目录中已存在的文件,但是在执行该命令之后创建的
文件就没有设置的acl权限了,也就是命令设置的权限不能递归到未来文件.如下所示

1 [vampire@LAMP vampire]$ touch one.file
2 [vampire@LAMP vampire]$ ll
3 total 0
4 -rw-rwxr--+ 1 vampire vampire 0 May 18 22:11 anothertest.file
5 -rw-rw-r--  1 vampire vampire 0 May 18 22:20 one.file    //之后创建的文件并没有acl权限
6 -rw-rwxr--+ 1 vampire vampire 0 May 18 22:11 test.file

默认acl权限
如果给目录设置了默认acl权限.那么目录中所有新创建的文件都会继承父目录的acl权限(主要针对之后创建的文件)

1 [vampire@LAMP tmp]$ ll  test
2 total 8
3 drwxrwxr-x 2 vampire vampire 4096 May 18 22:32 one.file
4 drwxrwxr-x 2 vampire vampire 4096 May 18 22:32 two.file

当前test目录和其中的两个文件都没有acl权限
设置test的默认acl权限

 1 [vampire@LAMP tmp]$ setfacl -m d:u:iaknehc:rx test  //设置目录test的默认acl权限
 2 [vampire@LAMP tmp]$ getfacl test
 3 # file: test
 4 # owner: vampire
 5 # group: vampire
 6 user::rwx
 7 group::rwx
 8 other::r-x
 9 default:user::rwx
10 default:user:iaknehc:r-x
11 default:group::rwx
12 default:mask::rwx
13 default:other::r-x
14 
15 [vampire@LAMP tmp]$ touch test/three.file   //新建一个文件
16 [vampire@LAMP tmp]$ ll test
17 total 8
18 drwxrwxr-x  2 vampire vampire 4096 May 18 22:32 one.file
19 -rw-rw-r--+ 1 vampire vampire    0 May 18 22:37 three.file  //新建的文件有acl权限,之前创建的文件没有
20 drwxrwxr-x  2 vampire vampire 4096 May 18 22:32 two.file

一般使用setfacl -m d:u:iaknehc:rx -R test,这样之前创建的文件和后来创建的都有acl权限

递归acl权限和默认acl权限