查看acl权限是否开启
dumpe2fs -h /dev/sda3
dumpe2fs 是查询指定分区详细文件系统信息的命令
-h 仅显示超级快中的信息而不显示磁盘块组的详细信息
即要查询文件所在的分区是否支持ACL权限
Default mount options: user_xattr acl
可见此分区默认支持acl权限
临时开启分区ACL权限
mount -o remount, acl / 重新挂在根分区,并挂在加入acl权限
永久开启分区acl权限
UUID=968cae7b-e677-4df1-bdf0-341de3d244dd / ext4 defaults,acl 1 1
mount -o remount /
重新挂载文件系统或重启系统,修改即可生效
查看acl权限的命令
getfacl 文件名 查看文件的acl权限
设定acl权限的命令
setfacl 选项 文件名
-m 设定acl权限
-x 删除指定的acl权限
-b 删除所有的acl权限
-d 设定默认的acl权限
-k 删除默认的acl权限
-R 递归设置acl权限
useradd Test1
useradd Test2
groupadd tgroup
gpasswd -a Test1 tgroup
usermod -G tgroup Test2
ll -d /project/
drwxr-xr-x 2 root root 4096 Mar 31 22:06 /project/
chown root:tgroup /project/
ll -d /project/
drwxr-xr-x 2 root tgroup 4096 Mar 31 22:06 /project/
chmod 770 project
useradd st 添加特殊用户
setfacl -m u:st:rx /project
给用户st赋予r-x权限,"u:用户名:权限"
getfacl /project/
# file: project/
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
mask::rwx
other::---
groupadd tgroup2
setfacl -m g:tgroup2:rwx /project/
getfacl /project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
group:tgroup2:rwx
mask::rwx
other::---
关于最大有效权限mask参数
如果我们给用户赋予了ACL权限,实际权限值需要和mask设置的权限值相与,
才能得到用户真正的权限。 mask 对acl用户和用户组,还有普通组生效
setfacl -m m:rx /project
getfacl /project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx #effective:r-x
group:tgroup2:rwx #effective:r-x
mask::r-x
other::---
删除acl权限
setfacl -x u:用户名 文件名
删除指定用户的acl权限
setfacl -x g:组名 文件名
删除指定用户组的acl权限
setfacl -b 文件名
删除文件的所有acl权限
setfacl -x g:tgroup2 /project
getfacl /project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
mask::rwx
other::---
setfacl -b /project/
getfacl /project/
# file: project/
# owner: root
# group: tgroup
user::rwx
group::rwx
other::---
递归acl权限
递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的acl权限
setfacl -m u:用户名:权限 -R 文件名
setfacl -m u:st:rx -R /project/
但是递归是对当前已经存在的文件生效,如果后续目录中新添加文件,就不会按照acl权限的设定去生效
由此引出了默认acl权限,被设置默认权限的acl目录,后续新建的文件都是有acl权限的文件。
setfacl -m d:u:用户名:权限名 文件名
d 就是default的意思