设置目录以在组内共享文件的常见方法是:
$ mkdir foo
$ chgrp felles foo
$ chmod g+ws foo
$ setfacl -m group:felles:rwx foo
$ setfacl -dm group:felles:rwx foo
这样可以确保创建的所有文件foo
对组都是可读和可写的felles
:
$ umask
0022
$ echo hi > foo/bar
$ ls -l foo
total 4
-rw-rw-r--+ 1 bhm felles 3 2010-09-23 00:18 bar
但是,如果将文件复制到foo
,则不会应用默认ACL:
$ echo you > baz
$ cp baz foo/
$ ls -l foo
total 8
-rw-rw-r--+ 1 bhm felles 3 2010-09-23 00:18 bar
-rw-r--r--+ 1 bhm felles 4 2010-09-23 00:19 baz
$ getfacl foo/baz
# file: foo/baz
# owner: bhm
# group: felles
user::rw-
group::rwx #effective:r--
group:felles:rwx #effective:r--
mask::r--
other::r--
为什么会发生这种情况,并且有办法解决?
(将文件移到目录中既不考虑ACL也不考虑组所有权,但我可以理解为什么:您可能不希望仅仅因为更改了文件名而更改文件的权限。)