ldap实现Linux登录账号统一管理-svn

安装http 服务

yum install -y httpd

检查http是否安装

httpd -version

安装httpd支持SVN的模块 mod_dav_svn

yum install mod_dav_svn -y

安装成功后,会有mod_dav_svn.so和mod_authz_svn.so两个文件。
find / -name mod_dav_svn.so
/usr/lib64/httpd/modules/mod_dav_svn.so
find / -name mod_authz_svn.so
/usr/lib64/httpd/modules/mod_authz_svn.so
安装httpd 验证模块 mod_auth_basic

yum install mod_auth_basic -y

安装httpd支持openLDAP 的模块

yum install mod_auth_ldap -y

安装SVM服务

  • 第一步:通过yum命令安装svnserve,命令如下:
    yum -y install subversion
  • 第二步:创建版本库目录(此仅为目录,为后面创建版本库提供存放位置)
    mkdir /svnrepos
  • 第三步:创建svn版本库
    在第二步建立的路径基础上,创建版本库
    svnadmin create /svnrepos/dev (dev为你预期的版本库名称,可自定义)
  • 第四步:配置修改
    进入已经创建好的版本库目录下,也就是前文说创建的xxxx
    进入conf
cd /svnrepos/dev/conf
conf  db  format  hooks  locks  README.txt

conf目录下,一共存放三份重要的配置文件,如下:

ls
authz  passwd  svnserve.conf

authz:负责账号权限的管理,控制账号是否读写权限
passwd:负责账号和密码的用户名单管理
svnserve.conf:svn服务器配置文件

http+svn 的配置

如果不使用ldap认证,而使用密码文件认证则配置文件可以改为:

<Location /repos>  
   DAV svn  
   SVNPath /svnrepos/dev  
  
   AuthType Basic  
   AuthName "SVN Authorization Realm"  
     
   #使用htpasswd产生的密码文件  
   AuthUserFile  /svnrepos/dev/conf/passwd 
   #目录分组权限
   AuthzSVNAccessFile /svnrepos/dev/conf/authz  
     
   #允许匿名读取  
   Satisfy Any  
   Require valid-user  
</Location>  

ldap+svn 的配置
<Location /repos>
    DAV svn
    #svn 路径,如果有多个子项目使用 SVNParentPath
    SVNPath /svnrepos/dev
    SVNListParentPath On
   #svn目录分组权限
    AuthzSVNAccessFile /svnrepos/dev/conf/authz

    AuthBasicProvider ldap
    AuthType Basic
    AuthName "Subversion repository"
   #搭建的openldap url地址
    AuthLDAPURL "ldap://192.168.85.129:389/dc=dev,dc=com?uid?sub?(objectClass=*)"
    # 配置 openldap的cn、dc
    AuthLDAPBindDN "cn=admin,dc=dev,dc=com"
    # 配置openldap的管理员密码
    AuthLDAPBindPassword "abc123"
    Require valid-user
</Location>

其他
1、svn服务器有2种运行方式:独立服务器 和 借助apache。2种方式各有利弊。这里是以apache整合的;
独立服务的方式为svnserve -d -r  /data1/svnroot  方式启动进程,监听端口为3690 。
2、svn存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。默认使用的存储方式也是FSFS方式。
vim /etc/httpd/conf/svnauthz.conf
[groups]  
admin=robin,svnadmin,ybk
[/]
@admin = rw
[test:/]
ybk= rw
zzy = rw
注:
1、上面的test对应的是svnadmin下create的目录。
2、@admin对应的是管理员组,可以再建其他组,如:java_team 、oam、market等。robin、svnadmin、ybk、zzy这些都是用户名 。如果要和ldap进行整合的话,确保这些用户在ldap中存在。
3、使用if-svnadmin 这类web程序做svn的用户权限管理时,需要确保svnauthz.conf文件对apache用户可写,不然在if-svnadmin修改时不生效。
4、确保/data1/svnroot目录apache用户可读写或直接属主改过apache,不然在使用TortoiseSVN等程序上传或删除时会提示权限拒绝。
权限配置总结
用户组格式:
[groups]
用户组名 = 用户1,用户2
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
版本库目录格式:
[版本库:/项目目录]
@用户组名 = 权限
用户名 = 权限
其中,方框号内部分可以有多种写法:
/,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/home/svnroot/repository。这样,/就是表示对全部版本库设置权限。
test:/,表示对版本库test设置权限
权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。

SVN其相关组件及用途如下:

svn
命令行客户端程序。
svnversion
此工具用来显示工作拷贝的状态(用术语来说,就是当前项目的修订版本)。
svnlook
直接查看Subversion版本库的工具。
svnadmin
建立、调整和修复Subversion版本库的工具。
svndumpfilter
过滤Subversion版本库转储数据流的工具。
mod_dav_svn
ApacheHTTP服务器的一个插件,使版本库可以通过网络访问。
svnserve
一个单独运行的服务器程序,可以作为守护进程或由SSH调用。这是另一种使版本库可以通过网络访问的方式。
svnsync
一个通过网络增量镜像版本库的程序
apache和svnserver两种方式的访问方法
http://192.168.1.222/repos,采用了Apache作为服务器的话就可以以这种形式访问,权限由Apache设置。
svn://192.168.1.222/repos,采用了svnserve作为服务器的话那么就可以采用这种形式访问,它是一种基于TCP/IP的访问方式。权限由仓库的配置文件设置。
    原文作者:Lisong
    原文地址: https://www.jianshu.com/p/c522f19e0043
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞