我们想模仿某个目录foo上系统范围的002 umask的行为,以确保以下结果:
>在foo下创建的所有子目录将拥有775个权限
>在foo和子目录下创建的所有文件都具有664权限
对于所有用户(包括root用户和所有守护进程)创建的文件/目录,将发生> 1和2.
假设我们的分区上有ACL is enabled,这是我们提出的命令:
setfacl -R -d -m mask:002 foo
……但这不起作用.在目录中创建的新文件最终看起来像:
-rw–w-r–+
当我在新文件上运行getfacl时,我得到:
# file: newfile.py
# owner: root
# group: agroup
user::rw-
group::rwx #effective:-w-
mask::-w-
other::r–
换句话说,应用具有ACL的掩码:200与应用umask 200不同.
那么有没有办法将每个目录的umask应用于ACL?
解决方法
这是ACL的典型工作:-)
你的榜样
$mkdir /tmp/foo
设置目录本身的权限
$setfacl -m g::rwx -m o::rx /tmp/foo
为新创建的目录和该目录中的文件设置权限.
$setfacl -m default:g::rwx -m o::rx /tmp/foo
测试
$mkdir /tmp/foo/bar $touch /tmp/foo/bar/baz.py $ls -ld /tmp/foo/bar /tmp/foo/bar/baz.py drwxrwxr-x+ 2 jdoe jdoe 4096 Mar 10 00:06 /tmp/foo/bar -rw-rw-r-- 1 jdoe jdoe 0 Mar 10 00:06 /tmp/foo/bar/baz.py
说明
>掩码的概念与ACL和Unix权限掩码非常不同. ACL的掩码是文件的属性…它限制通过ACL授予的最大权限(掩码:r-x group:foo:rwx =>有效权限= r-x)
>警告:修改组的Unix权限,也修改ACL的掩码(按设计!).
建议
>使用setgid(如chmod 2755),以便控制哪个组可以写入文件.>和/或显式授予组setfacl -m group的权限:dev_team:rwx