svn 服务器采用 http 方式登录

tech2022-11-25  96

系统是 centos7,需要先搭建好 svn 服务器,可以参考 centos7 搭建 svn 服务器。 采用 http 方式登录可以加密密码,不用直接明文显示。。。

1 搭建 http 服务器

1.1 安装 httpd $ yum install httpd

设置开机启动 $ chkconfig httpd on

启动 httpd $ service httpd start

1.2 安装辅助服务 $ yum install mod_dav_svn mod_auth_mysql

2 修改配置文件

2.1 创建版本库的 http 授权目录 我的版本库路径是:/home/svn/general,默认的 passwd 和 authz 文件放在 /home/svn/general/conf 目录,建议把 http 授权目录也放这里,方便管理。

1)新建 http 授权目录 $ cd /home/svn/general/conf $ mkdir http-auth && cd http-auth

2)创建 passwd 文件,保存账号信息,使用 htpasswd 生成 $ htpasswd -c /home/svn/general/conf/http-auth/passwd lk 根据提示设置 lk 账号的密码就可以了,htpasswd 的参数如下: -c:创建 passwd 文件,如果文件存在则清空文件内容; -n:不写入 passwd 文件,直接显示加密后的密码; -m:使用 MD5 加密(默认); -d:使用 CRYPT 加密; -s:使用 SHA 加密; -p:使用普通文本格式(明文存储,不加密); -b:命令行中在 用户名 空格后接上 密码 ,不需要交互; -D:删除指定用户

3)设置用户权限控制文件 $ vim authz 内容:

[groups] admin = lk front = user1, user2 test = user3 [/] @admin = rw [/front] @front = rw @test = r [/test] user3 = rw

[groups]:分组,如 front 分组有用户 user1 和用户 user2 [/]: svn 根目录 @admin: 表示 admin 组的所有成员 rw: 读写权限

2.2 修改 svn 配置文件 $ vim /home/svn/general/conf/svnserve.conf 指定 passwd 文件和 authz 文件的路径

password-db = /home/svn/general/conf/http-auth/passwd authz-db = /home/svn/general/conf/http-auth/authz

2.3 修改 httpd 配置文件 $ vim /etc/httpd/conf/httpd.conf 在文件最后面添加以下内容:

LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn> DAV svn SVNListParentPath on #SVNParentPath /home/svn/general SVNPath /home/svn/general AuthType Basic Satisfy Any AuthName "Subversion repos" AuthUserFile /home/svn/general/conf/http-auth/passwd AuthzSVNAccessFile /home/svn/general/conf/http-auth/authz Require valid-user </Location>

说明: SVNPath:是版本库目录,多个版本库时使用 SVNParentPath ; AuthUserFile:用户认证文件,填 passwd 文件的路径; AuthzSVNAccessFile: 权限文件,填 authz 文件的路径; Require :用户访问是否需要验证;

2.4 Apache 用户添加 svn 仓库的写权限 1)把 Apache 用户加入 root 组 $ usermod -a -G root apache

2)组内成员添加写权限 $ chmod -R g+w /home/svn

3)重启服务 $ service httpd restart $ service svnserve restart

如果 svn 重启失败,直接把进程 kill 掉重新启动。

2.5 测试 建立一个目录,checkout 版本库 $ mkdir svnbase $ cd svnbase

checkout 版本库 $ svn checkout http://[ip]:[port]/[path] ./ --username lk ip:svn 服务器的 ip; port:版本库的端口; path:checkout 文件的路径,不写则 checkout 整个版本库; lk:用户名;

可以把文件拉到本地就成功了。

最新回复(0)