Samba,Apache和SVN。 获得权限

我有两台机器:

  1. Windows客户端(开发机器)
  2. Linux Web服务器(Ubuntu)

在Linux服务器上,我安装了Apache,Samba和SVN。

我创build了映射到htdocs /目录的samba共享,以便我可以从Windows访问networking文件。

以下说明了我的工作stream程:

  1. 从Linux服务器上的命令行,我将远程服务器的Web项目的工作副本签出到本地Linux服务器的htdocs目录中。
  2. 在Windows机器上,我访问这些文件(使用samba),并在我的编辑器中进行编辑并在Web浏览器中进行testing
  3. 回到Linux机器上,我将我的工作签入到远程服务器。

我现在的问题是,目前我能够通过Samba编辑Windows盒子上的文件,我必须将文件的所有者更改为nobody(apache用户),并将Samba共享设置为使用SHARE权限

当我尝试使用SVN提交和更新等我不能因为我的Linux用户不是'没有',并没有权限这样做。 所以我必须成为根做一个SVN [命令],然后将所有文件更改回“无人”,以便我不能在Windows上编辑。

我希望能够做的是让我的本地Linux用户拥有Web文件,这将使SVN命令工作,Windows(通过samba)也可以使用同一个用户。

我怎样才能使这个工作,有没有办法让Windows和Linux用户匹配?

拥有Apache运行的组所拥有的文件和目录。 创build目录SGID 。

chgrp -R group1 /path/to/htdocs find /path/to/htdocs -type d -exec chmod 2775 {} \; 

在SAMBA共享下指定这个组,可以使用force group=group1来完成。

使用户可以使用该组的成员对SAMBA进行身份validation。 在valid users指定此用户,并在SAMBA中的共享内write list 。 这也应该允许你提交SVN。

另外,在smb.conf中指定create mask=0664directory mask=2775 ,这将在创build时设置适当的权限。 如果这些文件与Apache拥有相同的用户,则可以在两个设置中将最后一位设置为0。

如果一切都一致地应用,您应该能够执行所有需要的操作,而不会对任何function产生负面影响。

华纳,这个答案对我来说是个救命恩人。 有一件事我不知道,你需要考虑是否有人想从命令行运行SVN更新。 见http://svnbook.red-bean.com/en/1.1/ch06s05.html ,它涵盖了这一点。