如何在 Linux 上设置共享目录?

JR *_*rne 5 linux filesystems permissions share

我有一个 linux 服务器,我想用它在我公司的用户之间共享文件。用户将使用 sftp 或安全外壳访问机器。

这是我所拥有的:

光盘 / 家
ls -l
drwxrwsr-x 5 userA 员工 4096 Jul 22 15:00 共享
(省略其他列表)

我希望员工组中的所有用户都能够创建、修改、删除共享文件夹中的任何文件和/或目录。我根本不希望其他任何人访问该文件夹。

我有:

  1. 通过修改 /etc/group 并运行 grpconv 更新 /etc/gshadow 将用户添加到人员组

  2. 运行 chown -R userA.staff /home/shared

  3. 运行 chmod -R 2775 /home/shared

现在,staff 组中的用户可以创建新文件,但不允许打开目录中的现有文件进行编辑。我怀疑这是由于与每个用户关联的主要组 ID 仍然设置为创建用户时创建的组。因此,用户“userA”的 PGID 是“userA”。

如果我可以提供帮助,我宁愿不将用户的主要组更改为“员工”,但如果这是最简单的选择,我会考虑。

而且,一个主题的变体,我想对另一个目录做同样的事情,但也允许 apache 用户读取目录中的文件并为它们提供服务。

设置它的最佳方法是什么?

Jam*_*ger 5

你所拥有的实际上看起来是正确的。您在目录上设置了 setgid 位,因此创建的新文件应该继承该staff组。不过,它们仍然归创作者所有。我怀疑问题在于umask您的用户默认为022甚至077,这意味着他们创建的新文件默认没有组写入权限。用户/组所有权是正确的,但组权限不允许组的其他成员写入(甚至可能读取)文件。

staff组中选择一个用户并将其设置umask002or 007,这意味着新文件将是所有者和组可写的。我怀疑这会解决问题:

bash$ umask
0022
bash$ umask 002
bash$ umask
0002
Run Code Online (Sandbox Code Playgroud)

此外,您指出您根本不希望staff组外的任何人对目录有任何访问权限。您应该修改目录权限以2770实现此目的,否则staff将无法读取(但不能修改)目录中的文件。

关于apache用户的最后一个问题,最简单的方法可能是将该用户添加到staff组中。