1.递归ACL权限
- 递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限
- 命令:
setfacl -m u:用户名:权限 -R 文件名
小提示:(1)这条命令后面跟的是目录名。在Linux当中目录也是文件。 这个后面只能跟目录。因为是递归只能是目录下的子目录、子文件。如果给一个普通文件的话会报错。(2)这个 -R 只能放在这个地方,Linux当中一般的选项来说,它的前后位置都是无所谓的,有些命令放在参数的后面都是可以执行的,但是这个命令不可以。
举个简单通俗的栗子: 学校有一栋宿舍,宿舍楼里有不同的房间,每个房间里有许多床,床上住着学生。宿舍管理员给宿舍定了一个规章,男生女生不能串寝,这个规则是宿。舍管理规定。宿舍管理员在楼下那个大喇叭喊道:男生女生不能串寝,违规开除 然后宿舍楼有了规章,每个宿舍也同样遵守这个规章,宿舍里的床也遵守规章,床上的学生也遵守规章,这就是递归,也就是一级一级的都有了这个规则。
-
开始实验:
注意: 就是递归使用后,这个文件的所属组也有了x(执行权限),因为因为设置的那个acl权限给用户st有了x(执行权限),会认为用户st有执行权限,所以也会认为这个所属组中的成员也有了执行。
小提示: 如果感觉给的权限过大了,可以手工调整mask权限,可以把mask的权限的x去掉,就算用户st有执行权限,也没有用。
2.默认ACL权限
上面的递归ACL权限生效了,相当于宿舍管理员在宿舍楼下喊了一句话,宿舍的人都听着,必须遵守宿舍的故障制度,宿舍的学生都遵守了这些权限,这就是递归的作用。但是有点小问题,如果宿舍楼来了新的学生没有通知到怎么办?这个相当于每来一个新生到这个宿舍楼,管理员都要重新喊一遍规章制度。这个如何解决那?
可以用默认acl权限来解决这个问题。
- 默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限
- 命令:
setfacl -m d:u:用户名:权限 文件名
开始实验:
提示: 这个-R可以不去掉,意思是不光/project有默认的权限,这个目录当中的子目录也拥有默认权限,这个可以同时用的。不加-R也可以,在父目录中创建目录或者文件,都会有acl权限。
注意: (1)递归是指:对现有文件遵守ACL权限,
(2)默认:是未来要新建的文件要遵守acl权限,只针对宿舍新来的学生。现有的学生必须通过递归来通知。
3.总结
- 这个两个权限都只能针对目录。
- 递归ACL权限是针对目录下的子文件,文件是不可能有子文件的,会报错。
- 默认ACL权限是指这个目录新出现的文件或者目录遵守ACL权限。如果给文件赋予ACL权限,虽然不报错,但是没有作用。因为不能在文件中创建子文件。