有很多公司为了开发自己的svn mysql 结合公司的其它系统使用,避免过多的的用户密码。
1)创建数据库
mysql>create database svn_auth;
mysql>use svn_auth;
mysql>grant all privileges on *.* to root@'%' identified by 'm1949com' with grant option;
2)创建表
mysql> CREATE TABLE users ( user_name CHAR(30) NOT NULL,user_passwd CHAR(64) NOT NULL,PRIMARY KEY (user_name));
3)创建测试账号
insert into svn_auth.users values('test001',md5('1'));
insert into svn_auth.users values('test002',md5('2'));
insert into svn_auth.users values('test003',md5('3'));
insert into svn_auth.users values('test004',md5('4'));
insert into svn_auth.users values('test005',md5('5'));
修改密码
update svn_auth.users set user_passwd=md5('1') where user_name='test001';
update svn_auth.users set user_passwd=md5('2') where user_name='test002';
update svn_auth.users set user_passwd=md5('3') where user_name='test003';
update svn_auth.users set user_passwd=md5('4') where user_name='test004';
update svn_auth.users set user_passwd=md5('5') where user_name='test005';
yum -y install httpd mod_auth_mysql subversion mod_dav_svn
安装完成可看到多了/etc/httpd/conf.d/subversion.conf文件
创建项目、用户
mkdir /home/svn
svnadmin create --fs-type fsfs /home/svn/m1949com 验证授权
cd /home/svn
vi authz,添加内容
[m1949com:/]
admin=rw
test001=rw
test002=rw
test003=rw
test004=rw
test005=rw
修改文件权限
chown -R apache.apache m1949com
chown -R apache.apache authz
配置httpd
# vi /etc/httpd/conf.d/subversion.conf,文件末尾添加
vim /etc/httpd/conf.d/subversion.conf
<Location /svn>
DAV svn
SVNParentPath /home/svn
AuthType Basic
AuthName "svn-authz-m1949com"
#AuthUserFile /home/svn/passwd
AuthzSVNAccessFile /home/svn/authz
AuthMySQLEnable on
AuthMySQLHost 192.168.1.88
AuthMySQLDB svn_auth
AuthMySQLUser root
AuthMySQLPassword m1949com
AuthMySQLUserTable users
AuthMySQLNameField user_name
AuthMySQLPasswordField user_passwd
AuthMySQLPwEncryption MD5
Require valid-user
</Location>
vim /etc/httpd/conf/httpd.conf
<Location /svn>
AuthName "svn-authz-m1949com"
</Location>
改ServerName 为 localhost:80
service httpd restart
可测试的项目 m1949com
用户及密码
test001 1
test002 2
.....
test005 5
URL测试地址 http://192.168.1.101/svn/m1949com/
排错 tail -f /etc/httpd/logs/error_log
以上是不能全自动网页管理,因为用户名在authz里面。要使用户名也用数据据生成,只需用程序生成以下格式的文件就行了。
authz 完整格式
[groups] # 这行不能变,这是格式
g_vip = admin #用户分组:格式 组名1 = 用户1,用户2
g_kk2201_m = test101 #项目一的分组1,格式: 组名1 = 用户1
g_kk2201_u = test102,test104 #项目一的分组2,格式: = 用户2,用户4
g_kk2201_r = test103 #项目一的分组3,格式: = 用户3 (允许一个用户在多个项目组,多个用户组)
g_kk2202_m = test201 #项目二的分组1,格式: 组名1 = 用户1
g_kk2202_u = test202,test204
g_kk2202_r = test203
g_kk2203_m = test301
g_kk2203_u = test302,test304
g_kk2203_r = test303
[kk2201:/] #项目名称1:/ (“:/”是格式,不能变)
@g_kk2201_m = rw # @组名 = 权限(权限可以是只读r,读写rw)
@g_kk2201_u = rw
@g_kk2201_r = r
* =
[kk2202:/] #项目名称2:/ @组名 = 权限(权限可以是只读r,读写rw)
@g_kk2202_m = rw
@g_kk2202_u = rw
@g_kk2202_r = r
* =
[kk2203:/] #项目名称3:/ @组名 = 权限(权限可以是只读r,读写rw)
@g_kk2203_m = rw
@g_kk2203_u = rw
@g_kk2203_r = r
* =
#生成的文件名称为 authz (无后辍,可以用记事本打开即可)
参考文档:
http://my.oschina.net/xiaokaceng/blog/185070
http://denghaibin.blog.51cto.com/4128215/1554829
扩展参考(SHA512加解密):
http://blog.itpub.net/9094533/viewspace-74434/
http://blog.chinaunix.net/uid-24426415-id-77207.html