我创建了一个文件夹/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 组中。因此两者都可读可写。不是您所要求的,但这就是您这样做的方式。