我有两台机器可供使用:
- Windows 客户端(开发机器)
- Linux 网络服务器(Ubuntu)
在 Linux 服务器上我安装了 Apache、Samba 和 SVN。
我创建了一个映射到 htdocs/ 目录的 samba 共享,以便我可以从 Windows 访问 Web 文件。
下面说明了我的工作流程:
- 从 Linux 服务器上的命令行,我将远程服务器上的 Web 项目的工作副本检出到本地 Linux 服务器的 htdocs 目录中。
- 在 Windows 机器上,我访问这些文件(使用 samba)并在编辑器中编辑它们,然后在 Web 浏览器中测试它们
- 回到 Linux 机器上,我将我的工作签入到远程服务器。
我遇到的问题是,目前为了能够通过 Samba 编辑 Windows 计算机上的文件,我必须将文件的所有者更改为 nobody(apache 用户),并将 Samba 共享设置为使用 SHARE 权限。
当我尝试使用 SVN 提交和更新等时,我无法执行此操作,因为我的 Linux 用户不是“nobody”,并且没有权限执行这些操作。所以我必须成为 root 并执行 SVN [命令],然后将所有文件改回“nobody”,这样我就无法在 Windows 上编辑。
我希望能够做的是让 Web 文件归我的本地 Linux 用户所有,这样 SVN 命令就可以运行,并且 Windows(通过 samba)也可以使用同一个用户。
我怎样才能让它工作,有没有办法让 Windows 和 Linux 用户匹配?
答案1
让文件和目录归某个组所有,Apache 运行为. 创建目录新加坡身份证。
chgrp -R group1 /path/to/htdocs
find /path/to/htdocs -type d -exec chmod 2775 {} \;
在 SAMBA 共享下指定该组,可以使用 来完成force group=group1
。
让你向 SAMBA 验证的用户成为此组的成员。在 SAMBA 中valid users
以及write list
你的共享中指定此用户。这也应该允许你提交到 SVN。
另外,在 smb.conf 中指定create mask=0664
和directory mask=2775
,这将在创建时设置适当的权限。如果文件与 Apache 属于同一用户,则可以将两个设置的最后一位都设置为 0。
如果一切都一致应用,您应该能够执行所有所需的操作而不会对任何功能产生负面影响。
答案2
Warner,这个答案对我来说是救命稻草。还有一点我不知道,那就是你需要考虑是否有人想从命令行运行 SVN 更新。请参阅http://svnbook.red-bean.com/en/1.1/ch06s05.html,它涵盖了这一点。