我在 Ubuntu 14.04 和 SVN 1.8.8 上使用 Apache 2.4。
我已经安装了 SVN 服务器并创建了多个存储库(每个客户端一个)。对于为每个客户端工作的每个团队,我在 /etc/apache2/conf-available 中添加了配置文件并使用 a2enconf。这些文件的格式如下:
<Location /svn/Client1/>
DAV svn
SVNPATH /home/svn/Client1
Options -Indexes
AuthType Basic
AuthName "Company SVN"
AuthBasicProvider ldap
AuthLDAPBindDN "cn=binduser,dc=company,dc=com"
AuthLDAPBindPassword "binduserpassword"
AuthLDAPURL "ldap://ldap.company.com:389/ou=users,dc=company,dc=com?cn?sub?(objectClass=posixAccount)"
AuthLDAPGroupAttributeIsDN on
AuthLDAPGroupAttribute member
Require ldap-group cn=client1,dc=company,dc=com
</Location>
在我的 LDAP 服务器上,我创建了 groupOfNames,例如“client1”、“client2”,并将我的团队成员添加到其中。到目前为止,一切顺利。一切正常。如果团队成员被分配给客户,我会将他添加到该组,他就可以访问。
现在,我需要授予一个特定用户(为客户工作)访问其中特定项目的权限,而不是整个 repo 的权限。
我将他的条目添加到 LDAP 然后尝试添加位置指令:
<Location /svn/Client1/Project17/>
Require ldap-user cn=adam
</Location>
不起作用。如果我http://svn.company.com/svn/Client1/Project17/
在浏览器中打开,我会看到基本身份验证弹出窗口,它会接受我自己的用户/密码,但不接受“adam”用户。Apache 日志显示:
[Tue Jun 27 07:44:33.213571 2023] [authz_core:error] [pid 29295] [client 121.153.248.253:65432] AH01631: user adam: authorization failure for "/svn/Client1/Project17/"
我将 Apache 的 LogLevel 设置为调试。这表明它正在检查组cn=client1,dc=company,dc=com
,但未在其中找到用户。这表明第二个 Location 指令没有执行任何操作。
是的,每次更改后我都会重新启动 apache2。
评论?