我有一个
Linux服务器,我想用来在我公司的用户之间共享文件.用户将使用sftp或安全shell访问该计算机.
这是我有的:
cd /home ls -l drwxrwsr-x 5 userA staff 4096 Jul 22 15:00 shared (other listings omitted)
我希望人员组中的所有用户都能够创建,修改,删除共享文件夹中的任何文件和/或目录.我根本不希望任何其他人访问该文件夹.
我有:
>通过修改/ etc / group并运行grpconv来更新/ etc / gshadow,将用户添加到staff组
>运行chown -R userA.staff / home / shared
>运行chmod -R 2775 / home / shared
现在,人员组中的用户可以创建新文件,但不允许他们打开目录中的现有文件进行编辑.我怀疑这是因为与每个用户关联的主要组ID仍然设置为创建用户时创建的组.因此,用户’userA’的PGID是’userA’.
如果我可以提供帮助,我宁愿不将用户的主要群体更改为“员工”,但如果这是最简单的选择,我会考虑它.
而且,一个主题的变体,我想与另一个目录做同样的事情,但也允许apache用户读取目录中的文件并提供它们.
设置它的最佳方法是什么?
解决方法
你实际上看起来是正确的.您在目录上设置了setgid位,因此创建的新文件应该继承staff组.但是,它们仍然由创作者拥有.我怀疑问题是你的用户的umask默认为022甚至077,这意味着他们创建的新文件默认情况下不具有组写权限.用户/组所有权是正确的,但组权限不允许该组的其他成员写入(或甚至可能读取)文件.
选择人员组中的用户并将umask设置为002或007,这意味着新文件将是所有者和组可写的.我怀疑这会纠正这个问题:
bash$umask 0022 bash$umask 002 bash$umask 0002
此外,您还注意到您不希望工作人员组以外的任何人完全访问该目录.您应该将目录权限修改为2770以实现此目的,否则非工作人员将能够读取(但不能修改)目录中的文件.