创建组写入权限,所有者创建的文件只能由所有者写入

创建组写入权限,所有者创建的文件只能由所有者写入

我创建了一个文件夹/hello:它具有以下权限:

Owner = rwx
Group = rwx
Others = r

并且该文件夹归该组所有john并属于该组sales。我创建了另一个名为 的用户david并将其添加到组中sales

目前,创建的文件john有:

Owner = rw
Group = rw
Others = r

创建的文件david是:

Owner = rw
Group = r
Others = r

我不希望创建的文件john默认授予该sales组写入权限。

我尝试更改权限,但导致david无法写入目录。

答案1

首先,关于其他人对 /hello 的读取权限,您可能根本不需要读取权限,或者您希望对 /hello 具有读取和执行权限。目录的执行权限意味着用户可以在该目录中执行 ls 操作。未经 Exec 权限读取意味着其他用户能够读取该目录中的任何文件,但前提是他们知道文件名。这是很少见的。

其次,如果 John 创建的文件始终可供其他人读取,那么您无法阻止 David 读取它们。

您可以使用 umask 命令设置用户创建文件的默认权限。将此行放入 John 和 David 的 .bashrc (或等效文件)中:

umask 7

现在,当 John 在 /hello 中创建文件时,它们将成为 john 的所有者和组。

-rw-rw---- 1 john  john  0 Jun 28 22:05 foo

David 将无法读取该文件。

另一种可能性是,不使用组名称 sales,只需将 john 添加到 David 的组中。然后,约翰将能够读/写大卫的文件,但反之则不行。

您可能会考虑其他一些有趣的事情。您可以在 /hello 目录上设置 gid 标志,然后当 John 或 David 创建文件时,它们将位于 sales 组中。因此两者都可读可写。不是您所要求的,但这就是您这样做的方式。

相关内容