我有一个运行在Ubuntu服务器上的subversion服务器,但我确实有一些权限问题。我的svn主文件夹及其所有子文件夹和文件对组subversion和该组中的每个人都具有读/写权限。
我使用svn协议连接我的svn,例如:
svn co svn://192.168.1.2/config现在我的问题是,当我使用我的计算机连接到SVN服务器时,我没有读/写权限。如果我设置了o+r和o+w,那么我就可以读写了,但是除非设置了"others“权限,否则svn会给出权限错误。
我应该如何在svn服务器上设置权限,这样它才能理解我正在使用远程机器进行连接,并给我组权限。
谢谢。
发布于 2012-05-21 12:06:30
如果您使用的是svn://协议,则读/写权限必须是运行svnserve进程的用户的权限。事实上,这正是当您有多个用户时不应该使用file://协议的原因……
当您使用svn://作为协议时,您是在请求svnserve进程对Subversion存储库进行读写操作。因此,您作为用户并不需要实际的读/写权限。
实际上,除了svnserve进程之外,您不希望其他任何人能够直接访问存储库文件。标准设置是让Subversion存储库中的文件仅供运行Subversion服务器进程的用户访问:无论是httpd还是svnserve。
要解决您的问题,请确保运行svnserve命令的用户拥有Subversion存储库目录树中的文件。确保所有文件和目录都设置为rwx------或rwxr-xr-x。这样,除了svnserve进程之外,任何人都无法访问这些文件。
那么,如何指定安全性呢?在Subversion存储库目录中,有一个名为conf的目录。最简单的方法是在此目录下配置一个名为svnserve.conf的文件。您对以下三个部分感兴趣:
# anon-access = read和# auth-access = read-write。您可以删除行首的#以启用这两个参数。anon-access设置您在不登录时拥有的访问权限类型。默认值为read。您可能希望将其更改为none。另一个是您登录时拥有的访问类型。您希望保留缺省值,即读写。关于第20行,在conf/svnserve.conf文件中,有一行# password-db = passed。在第11行中,您指定了登录用户所拥有的访问权限。现在,您正在指定包含登录名和密码的文件。删除此行开头的#以指定conf/passwd文件包含您的用户名和密码。该目录中有一个示例passwd文件。备注:确保此文件上有权限rw-------。您不希望任何人能够打开它并看到您所感兴趣的passwords!conf/svnserve.conf文件中的第27行进行循环。这看起来像# authz-db = authz。再次从开头删除#。在conf目录中,有一个示例authz文件,它向您展示了如何设置谁对存储库的特定部分具有读或读写访问权限。我强烈建议您在这样做之前三思而后行。否则,您将为自己创建大量的工作,并让所有的开发人员都讨厌您。开发人员被从一个项目拉到另一个项目并不少见。如果您已经严格锁定了项目,以便只有特定的开发人员可以写入特定的项目,那么每次开发人员切换项目时,您都会更改此文件,并且开发人员将不得不等待您才能完成他们的工作。轻触。轻触。发布于 2014-10-15 22:10:46
在花了几天时间阅读一些毫无意义的答案后,我最终解决了这个问题,只需使用sudo运行svnserve。
svnserve -d -r /svn/repository/...throws权限错误
sudo svnserve -d -r /svn/repository...no权限错误。
https://stackoverflow.com/questions/10678231
复制相似问题