我想要目录中的所有新文件/文件夹/var/www/公司及其所有子目录,以拥有用户公司和组www-数据。
所以我像这样设置我的 ACL:
$ getfacl /var/www/company/
getfacl: Removing leading '/' from absolute path names
# file: var/www/company/
# owner: company
# group: www-data
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:company:rwx
default:group::r-x
default:group:www-data:rwx
default:mask::rwx
default:other::r-x
但是,如果我创建一个新文件,例如,touch foo
那么用户和组都设置为公司:
-rw-rw-r--+ 1 公司 公司 0 Jun 30 09:52 foo
$ getfacl foo
# file: foo
# owner: company
# group: company
user::rw-
user:company:rwx #effective:rw-
group::r-x #effective:r--
group:www-data:rwx #effective:rw-
mask::rw-
other::r--
$ id company
uid=1000(company) gid=33(www-data) groups=33(www-data),27(sudo)
答案1
ACL 与新对象的主要组无关。 Linux 唯一可能的操作是强制使用与父目录相同的组。为此,您必须为该目录设置 SGID 位:
chmod g+s /var/www/company
答案2
您无法创建具有执行权限的文件。除了执行之外,默认值似乎在创建时保留。
您可以尝试创建一个文件夹来检查这里是否有“执行”(通过)权限。