我们团队共享一个开发目录。每次用户添加文件时,所有权都会更改为该用户。有没有办法确保目录中添加的文件的所有者始终保持不变?
答案1
如果您使用 Samba 通过 SMB 访问目录,则可以使用force user
中的参数smb.conf
。否则,您无法强制所有者但是,如果问题仅仅是用户无法编辑目录中彼此的文件,您可以通过执行以下操作来修复它:
- 让每个人都使用 umask 002(或 007)。检查
/etc/profile
和/etc/login.defs
。这将确保文件是组可写的。 - 使目录(及其所有子目录)归特定团体每个团队成员都是其中的一员。
- 使目录(及其所有子目录)成为 setuid 组(“
chmod g+s
” )。这是 Unix 的一个特殊功能,它将使所有新文件归属于公共组。
答案2
不可以,但是您可以将目录设置为 setgid,以便目录的组所有者拥有在其中创建的任何文件的组所有权。
答案3
这个问题的标准解决方案——在多个用户之间共享版本控制存储库——是让每个人都通过以专用用户身份运行的服务器与存储库交互,而不是通过文件系统。正如您所发现的,使用文件系统是有问题的。
您尚未指定要使用的版本控制系统,但使用 Suversion 或 git 时,您会在系统上设置专用用户,然后让开发人员通过 ssh 访问存储库。使用 Subversion 时,您可以使用svn+ssh
url;svn手册。
git 的默认行为是使用 ssh 访问“远程”存储库。我将“远程”放在引号中,因为在您的情况下,您将在本地系统上运行“服务器”。