对其他用户设定文件/目录的特殊权限 (setfacl)

目录

环境信息

本篇所使用的 setfacl 版本:

[root@rhel6-server acltest]# setfacl --version
setfacl 2.2.49

检查文件系统支持

查看文件系统是否支持 ACL 权限控制:

tune2fs -l /dev/sda3 | grep option

输出:Default mount options: acl

开启 ACL 支持

方法 1:修改 mount 选项

临时开启:

mount -o remount,acl /dev/vda3 /mnt/acltest

开机自动挂载(修改 /etc/fstab):

vim /etc/fstab

添加 acl 选项:

/dev/vda3 /mnt/acltest ext4 defaults,acl 0 0

方法 2:使用 tune2fs 修改文件系统

tune2fs 开启 ACL 后已永久有效,无需再改 fstab:

# 开启 ACL
tune2fs -o acl /dev/vda3

# 取消 ACL
tune2fs -o ^acl /dev/vda3

设置 ACL 权限

给某个用户设置权限:

setfacl -m u:joe:rx bobdir/

给某个组设置权限:

setfacl -m g:aclgp1:rx bobdir/

取消某项权限:

setfacl -x g:aclgp1 bobdir/

对文件或目录进行赋权:

setfacl -m user:qqgj_oss:rwx /usr/local/services/analyze/

权限递归

若要实现权限递归,即对目录下所有子目录和文件均有一样的权限,加上 -R 参数。注意:执行后对新增的文件和目录无效。

setfacl -R -m user:qqgj_oss:rwx /usr/local/services/analyze/

设置目录的默认 ACL

为新增的文件/目录自动应用 ACL,设置目录的默认 ACL:

setfacl -d -m user:qqgj_oss:rwx $dir

实现对目录下所有文件、目录以及新增文件/目录都有 ACL:

setfacl -R -d -m user:qqgj_oss:rwx $dir

注意事项

关于组权限:setfacl 设置的权限只对主组(useradd -gusermod -g 的组)有效,对附加组(useradd -Gusermod -aG 的组)无效。

setfacl 和 chmod 的权限可以相互覆盖。当两者权限不一致时,以 getfacl 看到的 #effective: 后的权限为准。

#linux-admin