Samba、Apache 和 SVN。获得正确的权限

Cam*_*oft 5 linux permissions svn samba apache-2.2

我有两台机器在工作:

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

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

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

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

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

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

当我尝试使用 SVN 提交和更新等时,我不能,因为我的 Linux 用户不是“没人”并且没有这样做的权限。所以我必须成为 root 执行 SVN [command] 然后将所有文件改回“nobody”,这样我就无法在 Windows 上进行编辑。

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

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

War*_*ner 4

让文件和目录归某个组所有,Apache 以. 将目录设置为 SGID

chgrp -R group1 /path/to/htdocs
find  /path/to/htdocs -type d -exec chmod 2775 {} \;
Run Code Online (Sandbox Code Playgroud)

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

使您向 SAMBA 进行身份验证的用户成为该组的成员。在 SAMBA 中valid users以及您的共享内指定此用户。write list这也应该允许您致力于 SVN。

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

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