一. 什么是ACL与如何支持启动ACL
ACL是Access Control List的缩写,主要的目的是在提供传统的owner,group,others的read,write,execute权限之外的细部权限设定。ACL可以针对单一使用者,单一文件或目录来进行r,w,x的权限规范。
ACL主要可以针对几个项目:
l 使用者(user):可以针对使用者来设定权限;
l 群组(group):针对群组为对象来设定其权限;
l 默认属性(mask):还可以针对在该目录下在建立新文件/目录时,规范新数据的默认权限;
二. 如何启动ACL
因为近年以来Linux系统对权限细部设定的热切需求,ACL几乎已经预加入在所有常见的Linux文件系统的挂载参数中,所以你无须进行任何动作。如果你不确认,你可以使用命令dmesg | grep –i acl来查看
[lianghua@study ~]$ dmesg |grep -i acl
[ 2.094025]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)
[ 3.159480]SGI XFS with ACLs, security attributes, no debug enabled
三. ACL的设定技巧:getfacl, setfacl
l getfacl:取得某个文件/目录的ACL设定项目;
l setfacl:设定某个目录/文件的ACL规范;
特定的单一用户的权限设定:【u:使用者:权限】,设定前加-m选项
[root@study ~]# touch acl_test1
[root@study ~]# setfacl -m u:lianghua1:rx acl_test1
[root@study ~]# ll acl_test1
-rw-r-xr--+ 1 root root 0 12月 4 21:18 acl_test1
如果一个文件设定了ACL参数后,它的权限部分就会多出一个”+”号。
使用getfacl查看
[root@study ~]# getfacl acl_test1
# file: acl_test1
# owner: root
# group: root
user::rw-
user:lianghua1:r-x
group::r--
mask::r-x
other::r—
特定的单一群组的权限设定:【g:群组名:权限】
[root@study ~]# setfacl -m g:lianghua1:rx acl_test1
[root@study ~]# getfacl acl_test1
# file: acl_test1
# owner: root
# group: root
user::rw-
user:lianghua1:r-x
group::r--
group:lianghua1:r-x
mask::r-x
other::r—
针对有效权限设定:【m:权限】
[root@study ~]# setfacl -m m:r acl_test1
[root@study ~]# getfacl acl_test1
# file: acl_test1
# owner: root
# group: root
user::rw-
user:lianghua1:r-x #effective:r--
group::r--
group:lianghua1:r-x #effective:r--
mask::r--
other::r—
mask表示有效权限,它的意义是:使用者或群组所设定的权限必须要存在于mask的权限范围内才会生效。
使用默认权限设定目录未来文件的ACL权限继承【d:[u|g]:[user|group]:权限】,可以使设置了ACL权限的目录下的新目录或文件可以继承父目录的ACL权限。
setfacl –b 目录/文件:去除ACL属性