Linux (CentOS 7 )下搭建局域网SVN服务器+SVN权限配置

服务器

浏览数:110

2019-3-11

AD:资源代下载服务

准备

公司内部需要配置局域网SVN,需要在在内部虚拟机服务器搭建,搭建过程做个记录,供参考。
注:如果条件允许,尽量在windows下搭建svn服务器,很省事,尤其是权限配置非常方便又易懂,效果相同

首先需要搭建SVN服务器

如果确认没有svn可以直接进入安装步骤

安装准备

保证当前系统没有安装svn
使用命令,尝试查看是否已经安装了svn

rpm -qa subversion

或者,我们直接在全部文件中查找svn文件夹就可以,使用如下命令查找,任意文件目录下输入

find / -name svn 

如果发现svn文件夹首先要确认是否为svn的文件夹,有些软件内置svn文件夹及相关服务,注意不要看错了。
如:

下面几行的svn是在redmine下的svn所以它是不需要进行处理的,若存在svn,则进行删除或者卸载。
如果是压缩包安装只许删除所有相关文件

rm -rf [目标文件夹]

如果使用的是yum安装则:

yum remove subversion

出现确认输入y 即可,直至卸载完成
使用命令

rpm -qa subversion

没有出现svn版本说明卸载成功

SVN安装

分别执行如下命令(安装必须在联网情况下完成)安装svn和相关依赖包

yum install subversion
yum install mod_dav_svn
yum install httpd httpd-devel subversion mod_dav_svn 
 mod_auth_mysql

安装完成后进行确认是否安装成功,根目录下输入

cd /etc/httpd/modules

执行

ls | grep svn

出现如下内容即可
mod_authz_svn.so
mod_dav_svn.so

到此为止svn服务器基本安装完成

SVN配置

创建代码库

新建一个目录用于版本库,存放版本库信息(这一步可以省略)

mkdir -p /usr/local/svn/repo

创建一个版本库

svnadmin create /usr/local/svn/repo

上面的位置就是版本库的位置,文件内存放该版本库的相关信息

用户配置以及配置文件的修改

进入配置文件目录

cd /usr/local/svn/repo/conf

修改svnserve.conf 去掉下面几列的注释

[general]
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz

分别解释一下上面四行的意思

  1. anon-access 控制非鉴权用户访问版本库的权限。取值范围为”write”、”read”和”none”。即”write”为可读可写,”read”为只读,”none”表示无访问权限。缺省值为read
  2. auth-access 控制鉴权用户访问版本库的权限。取值范围为”write”、”read”和”none”。即”write”为可读可写,”read”为只读,”none”表示无访问权限。缺省值:write
  3. password-db 指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:passwd
  4. authz-db 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:authz

修改passwd 文件,这个文件是存储所有账号和密码的

打开文件添加账户信息

[user]
admin = 123456
root = root

admin为登陆的用户名,123456是密码,使用回车分割用户

修改authz文件 ,该文件是进行用户分组和权限配置的

在[/]下添加

[/]
admin = rw
root = rw
* = r 

解释一下啊上面的配置
admin用户具有根目录下所有文件的rw(read,write)读写 权限,其他用户用*代替,其他用户只有读的权限

至此svn服务器的基本配置和用户配置已经完成
可以在svn客户端访问地址

svn://ip

注意我们使用的是svn协议来完成svn库的访问

分组和文件夹权限的配置

实际开发中会使用不同的分组来分类svn账号,进而实现权限控制
对用户进行分组,authz文件中的[groups]下添加,多个组员之间用 “,” 隔开

[groups]
group1 = admin
group2 = root

上面就是把amdin分到group1组,root分到group2组
在[/]下添加

[/]
@group1= rw
@group2 = rw
* = r 

可以批量对组的权限进行控制

文件夹权限配置

假设我们在版本库根目录下有两个文件夹分别为 user 和 project文件夹
现在设置user文件夹只有group1组的人员可以进行读写,其他用户组只可读,project文件夹只有group2组可以读写,group1组只有读权限,并且其他用户不可见(注意最后一行)
我们可以在authz文件中添加如下配置

[/user]
@group1 = rw
* = r

[/project]
@group2 = rw
@group1 = r
* = 

注意:对文件夹权限进行配置的时候,仓库里有多少个文件夹, 就得为每一个文件夹都分配权限,不然不起作用

完~