ACL是Access Control List的缩写,主要的目的是在提供传统的owner,group,others的read,write,execute权限之外的局部权限设定。ACL可以针对单个用户,单个文件或目录来进行r,w,x的权限设定,特别适用于需要特殊权限的使用情况。 ACL主要针对用户(user)、用户组(group)、以及掩码(mask)方面来控制权限。 简单地来说,ACL就是可以设置特定用户或用户组对于一个文件/目录的操作权限。 1. 查看分区ACL权限是否开启 [root@localhost ~]# df -h 查看分区使用状况 查看分区使用状况 [root@localhost ~]# dumpe2fs -h /dev/sda3 查看分区表的详细信息 查看分区表详细信息 由命令结果可见该分区是支持acl的,一般现在的linux系统默认都是支持acl的 1.1 如果不支持,可以修改 /etc/fstab文件, # vim /etc/fstab 在defaults后面添加acl可开启acl,修改后值为:defaults,acl [root@localhost ~]# mount -o remount / 然后重新挂载文件系统或重新启动系统,使修改生效。 1.2 也可以使用mount命令临时开启分区ACL权限 [root@localhost ~]# mount -o remount ,acl / #重新挂载根分区,并挂载加入ACL权限; 2. 设定及查看ACL权限的命令 # setfacl 选项 文件名
[root@localhost njh]# setfacl -m u:njh2:rx projects/ 给用户njh2赋予r-x权限,使用“u:用户名:权限”格式 [root@localhost njh]# getfacl projects/ 查看权限 查看ACL权限 3. 给用户组设定ACL权限 [root@localhost njh]# groupadd tgroup2 [root@localhost njh]# setfacl -m g:tgroup2:rwx projects/ 添加一个新组tgroup2,然后为该组分配ACL权限,使用“g:组名:权限”的格式 再一次 查看ACL权限,发现新加的组已经有权限了: [root@localhost njh]# getfacl projects/ # file: projects/ # owner: root # group: root user::rwx user:njh2:r-x group::r-x group:tgroup2:rwx mask::rwx other::r-x 4. ACL最大有限权限mask getfacl 命令可以查看文件或目录的ACL权限,其中有一行mask权限。 mask是用来指定最大有限权限的,如果我给用户赋予了ACL权限,是需要和mask权限“相与”才能得到用户的真实权限; 比如mask权限为 r-x,为一个用户新增rwx了权限,则新增的用户真实权限为:r-x 因为r&r=r,-&w=-,x&x=x 5. 删除ACL权限 # setfacl -x u:用户名 文件名 删除指定用户的ACL权限 # setfacl -x g:组名 文件名 删除指定用户组的ACL权限 # setfacl -b 文件名 删除文件的所有的ACL权限 6. 默认ACL权限和递归ACL权限 递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限 # setfacl -m u:用户名:权限 -R 文件名 默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限。 # setfacl -m d:u:用户名:权限 文件名 |
|
来自: 庆亮trj21bcn0z > 《系统》