我正在尝试配置由特定用户/组创建目录和文件时设置的文件权限,但似乎遇到了一些问题。
我已尝试设置以下内容:
chmod 2770 /path/to/directory
chmod g+rwxs /path/to/directory
但是当我在此目录中创建一个新目录时例如
/path/to/directory/deletemeplease
deletemeplease
将拥有权限drwxr-sr-x
在内创建的任何文件/path/to/directory/
都有权限rw-r--r--
我也尝试过为目录设置 ACL,如下所示:
setfacl -dm u::rwx,g::rwx,o::r /path/to/directory
设置ACL时,创建的文件和目录的权限越来越rw-rw-r--
接近,但执行位仍未设置。
这里我是否遗漏了某个步骤?
编辑
链接的答案仅解释了 umask 和 chmod 之间的区别。我的问题是,设置权限后,它们不会发生。
当创建新目录或文件时,我希望将权限设置为rwxrwxr--
。但是,当创建新目录时,目录的权限为rwxr-sr--
。当创建新文件时,权限为rw-rw-r--
。然后,如果创建新目录并包含文件,则新创建目录中的文件具有权限,rw-r--r--
这非常奇怪。
我刚刚发现,在终端内创建文件和目录时,权限会按预期应用(减去文件的执行位)。当通过 rsync 从正在执行的脚本创建目录/文件时,会发生上述奇怪的行为。该脚本是通过 www-data 用户执行的,该用户是应用了 acl 的目录的目录用户和组,因此在 rsync 运行时不应该应用它们吗?
运行 rsync 的脚本正在执行以下命令:
rsync -rltgoDzvO /path/for/files/to/sync /path/to/directory