我有一个在Ubuntu服务器上运行的subversion服务器,但我确实有一些权限问题。 我的主svn文件夹及其所有子文件夹和文件都具有组subversion的读/写权限以及属于该组的所有人。
我使用svn协议连接到我的svn,例如:
svn co svn://192.168.1.2/config
现在我的问题是,当我使用我的电脑连接到SVN服务器时,我没有写/读权限。如果我设置o + r和o + w然后我可以读写,但除非设置了“其他”权限,否则svn会给我许可错误。
我应该如何在svn服务器上设置权限,以便了解我正在使用远程计算机进行连接并向我授予组权限。
谢谢。
答案 0 :(得分: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
设置您未登录时的访问权限类型。默认为 read 。您可能希望将其更改为 none 。另一种是您登录时的访问类型。您希望保留默认的读写。
关于conf/svnserve.conf
文件中的第20行,有一行# password-db = passed
。在第11行中,您指定了登录的访问用户。现在,您要指定包含登录名和密码的文件。从此行的开头删除#
以指定conf/passwd
文件包含您的用户名和密码。该目录中有一个示例passwd
文件。 注意:确保此文件具有权限rw-------
。您不希望任何人能够打开它并查看密码!
通常情况下,这就是您感兴趣的内容。大多数网站都说任何可以登录的人都应该能够进行更改。毕竟,如果有人弄得一团糟,你可以随时撤消它。但是,如果您想更严格地知道谁可以更改哪些文件,您希望在conf/svnserve.conf
文件中的#27行周围进行操作。这看起来像# authz-db = authz
。再次从头开始删除#
。在conf
目录中,有一个示例authz
文件,向您展示如何设置谁对存储库的特定部分具有读取或读写访问权限。我强烈建议你这样做三次,也许三次。否则,你将为自己创造很多工作,让你所有的开发者都讨厌你。开发人员从一个项目转到另一个项目并不罕见。如果您已经严格锁定项目,那么只有某些开发人员可以写入某些项目,那么每次开发人员切换项目时您都会更改此文件,开发人员必须在他们开始工作之前等待您。轻触。轻触。
答案 1 :(得分:0)
花了几天阅读无意义的答案后,我终于通过简单地使用sudo运行svnserve来解决这个问题。
svnserve -d -r /svn/repository/
...抛出权限错误
sudo svnserve -d -r /svn/repository
...没有许可错误。