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 配置![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d02e0953abc7a514b46663d01cf355af.png)
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