如何将目录设置为具有持久组权限?

Posted

技术标签:

【中文标题】如何将目录设置为具有持久组权限?【英文标题】:How do you set a directory to have persistent group permissions? 【发布时间】:2010-10-06 10:45:00 【问题描述】:

我们有两个用户:

用户1 用户2

他们都属于“管理员”组。

我们有一个已设置为 775 的目录。该目录的组已更改为“admin”。每个用户都具有写入该目录的完全权限,但是当用户将新文件写入该目录时,该文件夹的组权限不会保留到写入的文件中。

我们应该如何让文件继承目录的组权限?

澄清:当一个新的文件或目录被写入时,它使用用户组作为新文件的组,而不是目录的组,这是有道理的——但是我怎么不让它发生呢?

【问题讨论】:

【参考方案1】:

您可以通过设置目录的 setgid 位 (chmod g+s) 来传播组权限。 这可能无法在所有 *nixes 和所有文件系统中移植。

http://en.wikipedia.org/wiki/Setuid#setgid_on_directories

http://www.gnu.org/software/coreutils/manual/html_node/Directory-Setuid-and-Setgid.html

【讨论】:

请注意,这是符合 SYSV 的行为,您可以通过在 dirs 上使用 +s 来修改它。 BSD 的行为一直是具有组继承。 它可以跨 POSIX 兼容的系统移植,这(至少对于这个目的)意味着任何以 X 结尾的东西(Unix、Linux、MacOS X)。【参考方案2】:

如果您使用的是 ext3 或 ReiserFS,这个page about creating a Linux file server 可能会有所帮助。具体来说,第 7 步建议使用以下命令。

setfacl -d -m g:sales:rw /groups/sales 

【讨论】:

【参考方案3】:

我觉得你应该看看here。

正如该网站所说,“Unix 不支持继承权限的概念。”

但是,我认为您正在寻找关于 ACL(访问控制列表)的部分。通过设置 ACL,您可以让您的文件从目录继承相同的 ACL,我认为这正是您所要求的。 setfacl 是您需要查看的 shell 命令。

希望有帮助!

【讨论】:

以上是关于如何将目录设置为具有持久组权限?的主要内容,如果未能解决你的问题,请参考以下文章

linux中,如何设置文件夹的访问权限?

如何设置UNIX/Linux中新创建目录或文件的默认权限

关于特殊权限

如何在win系统下给mysql分配权限

Bash 脚本 - 如何设置创建新文件的组?

在Winform程序中设置管理员权限及为用户组添加写入权限