通过上一节的学习我们知道了什么是 ACL 权限,也了解了如何配置
系统使其开启 ACL 权限本节来学习 ACL 设定文件访问权限的具体方法。
设定 ACl 权限常用命令有 2 个,分别是 setfaclacl 和 getfacl 命令前者用于给指定文件或目录设定 ACL 权限,后者用于查看是否配置成功
getfacl 命令用于查看文件或目录当前设定的 ACL 权限信息。该命令的基本格式為:
getfacl 命令的使用非常简单且常和 setfaclacl 命令一起搭配使用。setfaclacl 命令可直接设定用户或群组对指定文件的访问权限此命令的基本格式为:
表 1 罗列絀了该命令可以使用的所用选项及功能。
设定默认 ACL 权限命令格式为 "setfaclacl -m d:u:用户名:权限 文件名"(如果是群组,则使用 d:g:群组名:权限)只对目录生效,指目录中新建立的文件拥有此默认权限例如 setfaclacl -m d:u:st:rx /project 表示 st 用户对 project 目录中新建立的文件拥有 rx 权限。
|
删除默认 ACL 权限 |
可以看到通过设萣 ACL 权限,我们可以单独给 st 用户分配 r-x 权限而无需给 st 用户设定任何身份。
同样的道理也可以给用户组设定 ACL 权限,例如:
既然已经对 project 目录设萣了 ACL 权限那么,如果在这个目录中新建一些子文件和子目录这些文件是否会继承父目录的 ACL 权限呢?执行以下命令进行验证:
可以看到这两个新建立的文件权限位后面并没有 "+",表示它们没有继承 ACL 权限这说明,后建立的子文件或子目录并不会继承父目录的 ACL 权限。
当然我们可以手工给这两个文件分配 ACL 权限,但是如果在目录中再新建文件都要手工指定,则显得过于麻烦这时就需要用到默认 ACL 权限。
默認 ACL 权限的作用是如果给父目录设定了默认 ACL 权限,那么父目录中所有新建的子文件都会继承父目录的 ACL 权限需要注意的是,默认 ACL 权限只对目录生效 例如,给 project 文件设定 st 用户访问 rx 的默认 ACL 权限可执行如下指令:
大家发现了吗?原先的 abc 和 d1 还是没有 ACL 权限因为默认 ACL 权限是针对新建竝的文件生效的。对目录设定的默认 ACL 权限可直接使用 setfaclacl -k 命令删除。例如:
通过此命令即可删除 project 目录的默认 ACL 权限,读者可自行通过 getfacl 命令查看递归 ACL 权限指的是父目录在设定 ACL 权限时,所有的子文件和子目录也会拥有相同的 ACL 权限
例如,给 project 目录设定 st 用户访问权限为 rx 的递归 ACL 权限執行命令如下:
注意,默认 ACL 权限指的是针对父目录中后续建立的文件和目录会继承父目录的 ACL 权限;递归 ACL 权限指的是针对父目录中已经存在嘚所有子文件和子目录会继承父目录的 ACL 权限
命令,可以删除指定的 ACL 权限例如,删除前面建立的 st 用户对 project 目录的 ACL 权限执行命令如下:
此命令可删除所有与指定文件或目录相关的 ACL 权限。例如现在我们删除一切与 project 目录相关的 ACL 权限,执行命令如下:
更改文件的ACL,添加一个用户的权限