unix/setfacl:设置目录默认 acl 以进行正确的权限继承

unix/setfacl:设置目录默认 acl 以进行正确的权限继承

我在 /projects/svn 中有几个 svn 存储库,应该可以由 2 个用户写入,我的(unix)和 wwwrun(apache,用于 http 上的 svn)

新创建的文件夹和文件应该对两个用户都具有读/写权限

我尝试过 setfacl,但无法让它按我需要的方式工作

我的尝试如下:

unknown:/projects/svn # setfacl -b .
unknown:/projects/svn # setfacl -m u:unix:rwx,u:wwwrun:rwx,m:rwx .
unknown:/projects/svn # setfacl -dm u:unix:rwx,u:wwwrun:rwx,m:rwx .
unknown:/projects/svn # getfacl .
# file: .
# owner: unix
# group: users
user::rwx
user:wwwrun:rwx
user:unix:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:wwwrun:rwx
default:user:unix:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

unknown:/projects/svn # su -s /bin/bash wwwrun
wwwrun@unknown:/projects/svn> md test
wwwrun@unknown:/projects/svn> getfacl test
# file: test
# owner: wwwrun
# group: www
user::rwx
user:wwwrun:rwx                 #effective:r-x
user:unix:rwx                   #effective:r-x
group::r-x
mask::r-x
other::r-x
default:user::rwx
default:user:wwwrun:rwx
default:user:unix:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

wwwrun@unknown:/projects/svn>

如你所见,我的用户(unix)只有 rx(有效)权限

答案1

好吧,我应该读一下手册……

https://web.archive.org/web/20151220084629/http://turing.suse.de/~agruen/acl/linux-acls/online/
‘ACL 的工作原理’一节

我的组位是限制性的(rw),将掩码限制为 rx,因此我的 ACL 中的指定用户无法写入

事实上,这相当简单 :)

答案2

我无法重现您得到的结果;无论我是否包含 m:rwx,我都会得到预期的行为。这是在 Linux Ubuntu 10.04 LTS(Lucid Lynx)上,内核为 2.6.32-24-generic,文件系统为 ext4,setfacl v. 2.2.49:(用户“bhm”和“test”)

$ pwd
/data/musikk/dir
$ setfacl -b .
$ setfacl -m u:bhm:rwx,u:test:rwx,m:rwx .
$ setfacl -dm u:bhm:rwx,u:test:rwx,m:rwx .
$ getfacl .
# file: .
# owner: bhm
# group: bhm
user::rwx
user:bhm:rwx
user:test:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:bhm:rwx
default:user:test:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

$ su -s /bin/bash test
Password: 
test@hva:/data/musikk/dir$ mkdir testdir
test@hva:/data/musikk/dir$ getfacl testdir
# file: testdir
# owner: test
# group: test
user::rwx
user:bhm:rwx
user:test:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:bhm:rwx
default:user:test:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

答案3

问题是由于某种原因,默认情况下未设置掩码。我不明白为什么会发生这种情况,但最好不要设置它。尝试忽略 m:rwx 然后再试一次。

相关内容