我有一个Linux服务器,我想用来在我的公司用户之间共享文件。 用户将通过sftp或安全shell访问本机。
这是我有什么:
cd / home ls -l drwxrwsr-x 5 userA staff 4096 Jul 22 15:00 shared (其他列表省略)
我希望员工组中的所有用户都能够创build,修改,删除共享文件夹中的任何文件和/或目录。 我不希望其他人有权访问该文件夹。
我有:
通过修改/ etc / group并运行grpconv来更新/ etc / gshadow,将用户添加到员工组中
运行chown -R userA.staff / home / shared
运行chmod -R 2775 / home / shared
现在,员工组中的用户可以创build新文件,但不允许打开目录中的现有文件进行编辑。 我怀疑这是由于与每个用户关联的主组标识,这些用户仍然被设置为创build用户时创build的组。 所以,用户'userA'的PGID是'userA'。
我宁愿不把用户的主要群组改成“员工”,只要我能帮上忙,但如果这是最简单的select,我会考虑的。
而且,在一个主题上的变体,我想与另一个目录做同样的事情,但也允许Apache用户读取目录中的文件并提供服务。
什么是最好的方式来设置?
你实际上看起来是正确的。 你在目录上设置了setgid位,所以创build的新文件应该inheritancestaff组。 不过,它们仍然由创作者所有。 我怀疑问题是你的用户的umask默认为022甚至077 ,这意味着他们创build的新文件在默认情况下将不具有组写入权限。 用户/组的所有权是正确的,但组权限不允许组中的其他成员写入(或甚至读取)文件。
在staff组中select一个用户,并将umask设置为002或007 ,这意味着新文件将是拥有者和组可写的。 我怀疑这会纠正这个问题:
bash$ umask 0022 bash$ umask 002 bash$ umask 0002
另外,您注意到您不希望staff组以外的任何人访问该目录。 您应该将目录权限修改为2770以实现此目的,否则非staff将能够读取(但不能修改)目录中的文件。
对于关于apache用户的最后一个问题,最简单的方法可能是将该用户添加到staff组。
我同意他的发现。 关于FUSE文件系统守护进程。 我已经改写了如何在http://airkayu.com/node/24上轻松完成用户之间的本地共享程序,以防万一您仍处于迷宫之中。
问题是sftp deamon不采取login脚本,并提出了不允许写入组的umask。
为了解决这个问题,创build一个设置umask的脚本,然后运行sftp服务器:cat / usr / lib / openssh / sftp-server-prot umask 02 exec / usr / lib / openssh / sftp-server
然后编辑ssh / sshd_config来使用上面的包装脚本:子系统sftp / usr / lib / openssh / sftp-server-prot
然后重新启动sshd。