Centos实现svn本地认证apache认证
本文系统:Centos6.5_x64 本地lamp环境 ip:192.168.184.129
一、搭建svn,实现svn方式访问、本地用户认证
二、实现http方式访问、apache本地文件认证
subversion目录说明:
*dav目录:是提供apache与mod_dav_svn使用的目录,让他们存储内部数据
*db目录:就是所有版本控制的数据存放文件
*hooks目录:放置hook脚本文件的目录
*locks目录:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端
*format文件:是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号
*conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)
一、搭建svn服务;
1、搭建svn服务;
[root@Aries ~]# yum install ntsysv vim-enhanced subversion mod_perl gcc-c++ make unzip -y
2、新建一个目录用于存储SVN所有文件、创建版本仓库
[root@Aries ~]# mkdir /opt/svn[root@Aries ~]# svnadmin create /opt/svn/svn
3、初始化版本仓库中的目录;
仓库目录结构说明:
[root@Aries ~]# mkdir svn svn/dev svn/qa svn/ops svn/pub svn/ops/web svn/ops/wap[root@Aries ~]# tree svnsvn├── dev #研发目录├── ops #运维目录│ ├── wap #工程目录│ └── web├── pub #公共目录└── qa #测试目录6 directories, 0 files
导入仓库:
[root@Aries ~]# svn import svn/ file:///opt/svn/svn/ -m "init svn repo"增加 svn/ops增加 svn/ops/wap增加 svn/ops/web增加 svn/qa增加 svn/pub增加 svn/dev提交后的版本为 1。[root@Aries ~]# rm -rf svn/
4、添加用户
要添加SVN用户非常简单,只需在/opt/svn/svn/conf/passwd文件添加一个形如"username=password"的条目就可以了。
[root@Aries conf]# pwd/opt/svn/svn/conf[root@Aries conf]# cat passwd |grep -v ^#[users]admin = admin #管理员dev = dev #研发测试账号qa = qa ops = opszq = zq #普通个人账号
5,修改用户访问策略
/opt/svn/opt/conf/authz记录用户的访问策略,
[root@Aries conf]# cat authz[groups]g_admin = adming_dev = devg_qa = qag_ops = ops,zq[svn:/]@g_admin = rw* =[svn:/dev]@g_admin = rw@g_dev = rw@g_qa = r* =[svn:/qa]@g_admin = rw@g_qa = rw@g_dev = r@g_ops = r* =[svn:/ops]@g_admin = rw@g_ops = rw@g_qa = r* =[svn:/pub]@g_admin = rw@g_ops = rw@g_qa = rw@g_dev = rw* =
说明:以上信息表示,只有admin用户组有根目录的读写权。r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该目录有读写权限。最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。这个很重要,一定要加上!
6,修改svnserve.conf文件,让用户和策略配置生效。
[root@Aries conf]# cat svnserve.conf[general]anon-access = noneauth-access = writepassword-db = /opt/svn/svn/conf/passwdauth-db = /opt/svn/svn/conf/authz[sasl]
anon-access 控制非鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none" 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 缺省值:read
auth-access 控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 缺省值:write
password-db 指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf 目录的相对路径。缺省值:passwd
authz-db 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:authz
7、启动svn服务
[root@Aries ~]# svnserve -d -r /opt/svn
8、测试服务
[root@Aries ~]# svn co svn://192.168.184.129/svn --no-auth-cache --username username --password passwd
测试提交
二、实现http方式访问、apache本地文件认证
由于SVN服务器的密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。
1、安装apache svn 集成依赖包,会产生两个so文件,
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
[root@Aries ~]# yum install mod_dav_svn -y
2、将svn的用户配置转换为http认证文件
以下为一个小脚本;方便转换
[root@Aries conf]# pwd/opt/svn/svn/conf[root@Aries conf]# cat stoh.pluse warnings;use strict;open (FILE, "passwd") or die ("Cannot open the passwd file!!!n");open (OUT_FILE, ">webpasswd") or die ("Cannot open the webpasswd file!!!n");close (OUT_FILE);foreach () {if($_ =~ m/^[^#].*=/) {$_ =~ s/=//;`htpasswd -b webpasswd $_`;}}
进行转换;
[root@Aries conf]# perl stoh.plAdding password for user adminAdding password for user devAdding password for user qaAdding password for user opsAdding password for user zq
3、修改httpd.conf,添加关于SVN服务器的内容
[root@Aries conf]# vim /etc/httpd/conf/httpd.conf#add for svnDAV svnSVNPath /opt/svn/svn/AuthType BasicAuthName "Authentication for svn"AuthUserFile /opt/svn/svn/conf/webpasswdAuthzSVNAccessFile /opt/svn/svn/conf/authzSatisfy allRequire valid-user
重启服务
[root@Aries conf]# /etc/init.d/httpd restart
4、进行页面测试;
切换账号测试