0

我有一个在 Ubuntu 服务器上运行的颠覆服务器,但我确实有一些权限问题。我的主 svn 文件夹及其所有子文件夹和文件对组颠覆和属于该组的每个人都具有读/写权限。

我使用 svn 协议连接到我的 svn,例如:

svn co svn://192.168.1.2/config

现在我的问题是,当我使用计算机连接到 SVN 服务器时,我没有写/读权限。如果我设置 o+r 和 o+w 那么我可以读写,但除非设置了“其他”权限,否则 svn 会给我权限错误。

我应该如何在 svn sever 上设置权限,这样它才能理解我正在使用远程机器连接并给我组权限。

谢谢你。

4

2 回答 2

5

如果您使用该svn://协议,则读/写权限必须针对运行该svnserve进程的用户。事实上,这正是为什么file://当您有多个用户时不应该使用该协议的原因......

当您svn://用作协议时,您要求svnserve进程对您的 Subversion 存储库进行读取和写入。因此,您作为用户不需要实际的读/写权限。

事实上,您不希望svnserve进程以外的任何人能够直接访问您的存储库文件。标准设置是让您的 Subversion 存储库中的文件只能由运行您的 Subversion 服务器进程的用户访问:无论httpdsvnserve.

要解决您的问题,请确保运行svnserve命令的用户拥有您的 Subversion 存储库目录树中的文件。确保所有文件和目录都设置为rwx------rwxr-xr-x。这样,除了svnserve进程之外,没有人可以接触文件。

那么,如何指定安全性?在 Subversion 存储库目录中,有一个名为conf. 最简单的方法是配置一个svnserve.conf在这个目录下调用的文件。您对以下三个部分感兴趣:

  • 关于第 11 行,有两行# anon-access = read# auth-access = read-write. 您可以删除#行首的 以启用这两个参数。anon-access设置您未登录时的访问权限类型。默认为read。您可能希望将其更改为none。另一个是您登录时拥有的访问权限类型。您希望保留默认设置,即read-write

  • conf/svnserve.conf文件的第 20 行左右,有一行# password-db = passed. 在第 11 行中,您指定了登录用户的访问权限。现在,您正在指定包含登录名和密码的文件。从该行的开头删除#以指定该 conf/passwd文件具有您的用户名和密码。该目录中有一个示例passwd文件。注意:确保此文件rw-------对其具有权限。您不希望任何人能够打开它并看到密码!

  • 通常,这就是您感兴趣的全部内容。大多数网站都表示,任何可以登录的人都应该能够进行更改。毕竟,如果有人把事情弄得一团糟,你总是可以撤消它。但是,如果您想更严格地限制谁可以更改哪些文件,则需要查看conf/svnserve.conf文件中的第 27 行。这看起来像# authz-db = authz。再次#从头开始删除。在conf目录中,有一个示例authz该文件向您展示如何设置谁对存储库的特定部分具有读取或读写访问权限。我强烈建议您在这样做之前三思而后行。否则,您将为自己创造大量工作,并使所有开发人员都讨厌您。将开发人员从一个项目拉到另一个项目并不罕见。如果您已严格锁定项目,以便只有某些开发人员可以写入某些项目,那么每次开发人员切换项目时,您都会更改此文件,并且开发人员必须等待您才能完成工作。轻触。轻触。

于 2012-05-21T04:06:30.300 回答
0

在花了几天时间阅读无意义的答案后,我终于通过简单地使用 sudo 运行 svnserve 解决了这个问题。

svnserve -d -r /svn/repository/

...引发权限错误

sudo svnserve -d -r /svn/repository

...没有权限错误。

于 2014-10-15T14:10:46.353 回答