SVN管理工具有很多种,如SVNAdmin2.0、svnWebUI,这两款界面UI都比较美观,但是当前集成了LDAP的只有iF.SVNAdmin工具,本文讲解如何iF.SVNAdmin工具关联LDAP环境使用。
前言:环境介绍
| 软件 | 版本 |
|---|---|
| CentOS | 7.6 |
| SVN | 1.7.14 |
| HTTPD | 2.4.6-97 |
| PHP | 5.4.16 |
| SVNAdmin | 1.6.2 |
一、iF.SVNAdmin
当前环境 SVN 服务端已经安装好,路径为 /data/svn。
1、iF.SVNAdmin 部署
# yum install httpd subversion php php-ldap mod_ldap php-json php-xml php-pdo mod_ssl mod_dav_svn -y
# cd /usr/src && wget https://udomain.dl.sourceforge.net/project/ifsvnadmin/svnadmin-1.6.2.zip --no-check-certificate
# unzip svnadmin-1.6.2.zip
# mv svnadmin-1.6.2 /vaw/www/html/
# chmod -R 777 /var/www/html/svnadmin/data/
# chown -R apache:apache /var/www/html/svnadmin/
# chown -R apache:apache /data/svn/
# systemctl enable httpd
# systemctl start httpd
2、iF.SVNAdmin 配置
1、Web 界面初始化配置
浏览器输入 http://10.10.1.30:8085/svnadmin/ 进行初始化配置,我当前是把 HTTP 的监听端口改成了 8085。
2、LDAP 配置

3、LDAP 用户和组权限设置
3.1 添加访问路径


3.2 给用户或组添加访问项目权限

3.3 取消用户访问项目权限

4、iF.SVNAdmin 角色划分
当我们启用了 LDAP 之后,记得最少给一个 LDAP 用户设置超级管理员权限,防止初始 admin 账号登出时不能在登录进。
iF.SVNAdmin 可以为 LDAP 用户设置登录进管理系统的权限。我们常用的可能就二个角色,一个超级管理员,一个访问路径管理员。访问路径管理员是给用户授权访问某个项目权限的角色。

二、SVN配置LDAP认证
SVN 通过 Apache 进行代理 HTTP 访问的场景。在这种场景下,SVN 的访问是通过 HTTP ,然后经过 Apache 来认证的,所以只需要在 Apache 上集成 LDAP 的认证即可实现 SVN 的 LDAP 认证。
1、Apache 配置
# cat /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_user_module moduels/mod_authz_user.so
<Location /repos>
DAV svn
SVNParentPath /data/svn
#<LimitExcept GET PROPFIND OPTIONS REPORT>
AuthType Basic
AuthName "Subversion repository"
AuthzSVNAccessFile /data/svn/test/conf/authz
AuthBasicProvider ldap
#AuthzLDAPAuthoritative on
AuthLDAPURL "ldap://10.10.1.30:389/dc=qualitysphere,dc=github,dc=io?uid?sub?(objectclass=*)"
AuthLDAPBindDN "cn=admin,dc=qualitysphere,dc=github,dc=io"
AuthLDAPBindPassword "123456"
Require ldap-user
#</LimitExcept>
</Location>
2、测试验证

三、总结
LDAP一同步的话,那么原有的本地账号和组都会被清空掉,只剩下LDAP中的用户或组。即使你直接在auth文件中添加其他用户访问权限然后通过svn协议访问,只要一同步,这些配置也都会被清理掉。iF.SVNAdmin权限管控不够细致,当前访问路径管理员后就能设置所有项目的访问权限,正常我们是希望授权给某一个用户管理某一个项目,这样便于后面去授权项目负责人去管控所属项目权限。- 如果您的 LDAP 数据库有超过 1000 个用户和组,但您只收到 1001 个实体,您需要将 PHP 版本更新到 5.4。以前的 PHP 版本不支持从 LDAP 服务器获取超过 1001 个实体。
Reference:
https://blog.csdn.net/qq_25854057/article/details/125296480
http://svnadmin.insanefactory.com/documentation/#ldap
版权声明:本文为qq_25854057原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。