2012-05-21 57 views
0

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

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

svn co svn://192.168.1.2/config 

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

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

谢谢。

回答

5

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

当您使用svn://为你的协议,你问svnserve过程中做的读取和写入你的Subversion库。因此,您作为用户不需要实际的读/写权限。

实际上,您不希望svnserve进程以外的任何人都能够直接访问存储库文件。标准设置是让您的Subversion存储库中的文件仅对运行您正在使用Subversion服务器进程的进程的用户可访问:无论是httpd还是svnserve

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

那么,你如何指定安全性?在Subversion版本库目录中,有一个名为conf的目录。最简单的方法是在该目录下配置一个名为svnserve.conf的文件。有三个部分中,您有兴趣:

  • 关于线11条,有两条线# anon-access = read# auth-access = read-write。您可以删除行首的#以启用这两个参数。 anon-access设置您在未登录时所拥有的访问类型。默认值为请参阅。您可能想要将其更改为。另一种是您登录时的访问类型。您希望保留缺省值读写

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

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

0

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

svnserve -d -r /svn/repository/ 

...抛出权限错误

sudo svnserve -d -r /svn/repository 

...没有权限错误。