一、简介
ACL(access control list)访问控制列表,可以对单一的用户或者组设置对文件或目录的独立rwx权限。
二、文件系统是否支持ACL权限
ACL权限是传统的Unix-like操作系统权限的额外支持项目,要有文件系统的支持,目前绝大部分的文件系统都支持ACL的功能,包括EXT EXT JFS、XFS等。
1.CentOS6(EXT文件系统)
dumpe2fs -h /dev/sda1#查看/dev/sda1分区是否挂载了acl权限dumpe2fs 1.41.12 (17-May-2010)
···
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
#缺省挂载选项 用户未挂载ACL权限
···
Journal sequence: 0x00000017
Journal start: 0mount -o remount,acl /dev/sda1#重新挂载/dev/sda1分布,使其拥有acl权限,重启后失效。vim /etc/fstab#永久开启acl权限
/dev/sda1 ext4 defaults,acl 1 1
2.CentOS7(XFS文件系统)
dmesg | grep -i acl#CentOS7默认开启ACL权限
[ 1.888729] systemd[1]: systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
#系统在219运行系统模式,其中就包含了ACL
[ 3.744326] SGI XFS with ACLs, security attributes, no debug enabled
#具有ACL、安全属性、没有启用调试的SGI XFS文件系统。
三、ACL权限的使用
1.命令格式
setfacl [选项] {-m|-x} {u:username:rwx} 文件或目录#设置acl权限-b 删除所有ACL条目-m 添加ACL条目-x 删除指定用户的ACL条目-R 实现目录上的ACL递归-d 设置默认ACL权限(仅对目录生效)getfacl /aaa/#查看aaa目录的acl权限
2.添加删除ACL权限
getfacl ljz/#查看目录的acl权限
setfacl -m u:daboluo:rwx /home/ljz/#为daboluo用户添加对/home/ljz/下的rwx的acl权限getfacl ljz/#查看刚刚设置的acl权限
setfacl -x daboluo /home/ljz/#删除daboluo用户对/home/ljz的acl权限getfacl ljz/#查看目录的acl权限
3.设置目录的默认ACL权限
setfacl -d -m u:daboluo:r /home/ljz/#将daboluo对/home/ljz的只读acl权限设置为该目录的默认权限#/home/ljz/目录下新增的文件目录都会有该acl权限getfacl /home/ljz/touch /home/ljz/acl_test.txt#新建文件getfacl acl_test.txt#查看新建文件的acl权限mkdir /home/ljz/test#创建目录getfacl test/#查看目录的acl权限
4.设置umask掩码值
setfacl -R -m m:rwx /home/ljz/#对/home/ljz目录及其子目录文件设置umask掩码值为rwxgetfacl /home/ljz/*#查看ack权限
5.清空目录的所有ACL权限
setfacl -R -b /home/ljz/#清空/home/ljz/目录及其子目录文件的所有acl权限getfacl /home/ljz/#查看清空的权限是否生效