linux - Subversion+Apache authz 未授权

标签 linux apache svn

我正在尝试设置 authz。实际上,我让它工作了,但后来我需要从 Wable 转移到谷歌云,而在我这样做的同时,我从 Debian 转移到 Ubuntu 18.04。我也从 Subversion 1.9.5 迁移到 1.9.7。

我有一个来自 Wable+Debian 的 SVN 配置备份。但是仅仅恢复我的旧文件是行不通的。

无论如何,我有一个大型的单一存储库,我希望全世界都能够读取它,但我自己也能够读取和写入它。另外,我有一些我想私有(private)的目录,有时这些目录需要由其他用户写入。

我的 dav_svn.conf 看起来像:

$ sed -e 's/#.*$//' -e '/^ *$/d' mods-enabled/dav_svn.conf
below cmd output started 2019 Sun Jul 21 09:22:58 AM PDT
<Location "/svn">
  DAV svn
  SVNPath /var/svn/repos
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  AuthzSVNAccessFile /etc/apache2/dav_svn.authz
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
</Location>

顺便说一句,vim 喜欢把“REPORT”涂成红色。我不确定那是什么 - apache 似乎无论如何都通过了语法检查。

我的 dav_svn.authz 看起来像下面这样(我删除了一些配置以保护其他人的隐私):

$ sed -e 's/#.*$//' -e '/^ *$/d' /etc/apache2/dav_svn.authz
below cmd output started 2019 Sun Jul 21 09:23:52 AM PDT
[/]
dstromberg = rw
* = r
[/private-quizzes]
dstromberg = rw
* =

我的存储库允许我更改大多数文件 - 这很好。但是,如果我尝试结账/private-quizzes,我会立即得到:

$ svn checkout http://stromberg.dnsalias.org/svn/private-quizzes
below cmd output started 2019 Sun Jul 21 09:26:32 AM PDT
svn: E170013: Unable to connect to a repository at URL 'http://stromberg.dnsalias.org/svn/private-quizzes'
svn: E175013: Access to '/svn/private-quizzes' forbidden

如您所见,它甚至不要求输入用户名和密码。即使我删除了我的 ~/.subversion 它也不会要求它们。

我需要做什么才能让它尝试验证我的身份,以便我可以再次修改(针对 EG)私有(private)测验?

谢谢!

最佳答案

前言

请至少重新阅读此 SVN install manual 中的示例(特别注意“示例 2:混合匿名和身份验证访问”部分 - 我一直使用这种方法,没有任何问题/当我在 Subversion 中/)

一些补充说明

只是为了简单

  1. 如果您在 [/] 定义了一些权限级别,您可以忽略在子树中重复它(即当您在/中有 rw 时,您将自动在下面的整个树上具有相同级别)
  2. 即使使用 SVNPath(即单一存储库),我也建议对 authz 的文件部分使用通用格式:[repo:/path/in/repo]。来自上面的文档,来自“2.指定权限”部分

This will work in the case of using SVNPath as well, only the repository name (the last element of the url) will always be the same.

简历

我想

<Location "/svn">
  DAV svn
  SVNPath /var/svn/repos
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  AuthzSVNAccessFile /etc/apache2/dav_svn.authz
  Satisfy Any
  Require valid-user
</Location>

将非常适合您,您可以尝试 list|checkout|commit 到私有(private)区域,即使不编辑 authz 文件,但毕竟完善的 authz 会更好

关于linux - Subversion+Apache authz 未授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57135048/

相关文章:

php - htaccess - 将所有文件重写为 index.php,除了 sitemap.xml

linux - SVN:忽略已经提交的文件

svn - 修复标记版本中的错误(颠覆)

linux - 在Linux中,以认真的方式进行轮询

Linux SED - 保留空间 - 所有行的一个值

linux - 在 sudo 调用的 Bash 脚本中识别用户

apache - 将主机 ip 重定向到 apache tomcat 集群中的负载均衡器

java - Apache Tomcat 8.0 在 Eclipse MARS 上启动失败 - JAVA EE

regex - 替换文本和重复项

svn - 颠覆分支问题