SVN – Linux下SVN详细配置文档

服务器

浏览数:76

2019-10-16

AD:资源代下载服务

版本库文件说明

svnadmin create 创建实际的版本库之后,版本库目录下文件如下:

conf        # 核心配置文件,账号密码权限等配置
db          # 所有的版本控制的数据文件存放目录
format      # 文本文件,存放一个代表当前文件库配置的版本号整数
hooks       # 存放 hook文件的目录
locks       # 存放SVN锁
README.txt

Svn server详细配置

Svn server配置由 conf下面的三个文件共同决定 svnserver.conf  authz  passwd 

svnserver.conf

vim conf/svnserve.conf
[general]
# 控制非鉴权用户访问版本库的权限 write/read/none ,默认read
anon-access = read
# 控制鉴权用户访问版本库的权限 write/read/none,默认write
auth-access = write
# 指定用户密码的文件名,可以指定绝对路径,相对路径为conf/下
password-db = passwd
# 指定用户权限认证的文件名,可以指定绝对路径,相对路径为conf/下
authz-db = authz
# 版本库认证域
# 如果两个版本库的认证域一样,建议使用相同的用户名和密码
# 默认值为一个UUID(Universal Unique IDentifier 全局唯一标示)
realm = My First Repository
# 
force-username-case = none

[sasl]
# 是否开启SASL认证
use-sasl = true
# 指定加密强度
min-encryption = 0
max-encryption = 256

authz

包括三个部分,别名和权限分组,以及具体的版本库分支权限
别名aliases 
    others
分组group
    [groups]
    Groupname = username1, username2, username3, …, usernameN
版本库路径权限
    格式:
    [<版本库名>:<路径>]
    <username> = <privilege>
    <@groupname> = <privilege>
* = <privilege>

说明:
    1,Privilege取值为 ‘’, ‘r’, ‘rw’
    2,每一行只能单独配置一个用户或者用户组权限
    3,如果省略<版本库名>则<路径>对 所有版本库中相同路径都有相同权限
    4,注意这里groupname前面红色的 @ 是必须的,也是组区别于用户的标识
举例:
    [/jupei/public]
    Liuchao = rw
    @developers = rw
    * = 

passwd

按照下面的格式配置用户对应的密码,建议密码采用12位长度符合一定复杂度的密码
[users]
Username = passwd

多版本库实例

# svn 服务根目录
mkdir /opt/svnrepos
cd /opt/svnrepos

# SVN 多版本控制共享配置文件
mkdir conf  
svnadmin create repos1
svnadmin create repos2

# 删除各自的控制文件,新增共享配置
rm –rf repos1/conf/passwd repos1/conf/authz repos2/conf/passwd repos2/conf/authz
touch conf/passwd conf/authz

# 配置各自svnserve.conf,只有 realm配置不一样

Svnserve.conf

Repos1:

[general]
anon-access = none
auth-access = write
password-db = ../../conf/passwd
authz-db = ../../conf/authz
realm = My repos1

Repos2:

[general]
anon-access = none
auth-access = write
password-db = ../../conf/passwd
authz-db = ../../conf/authz
realm = My repos2

conf/passwd

[users]
Liuchao = lc123
Betty = bt123
James = jm123
Mark = mk123

conf/authz

[groups]
admin = liuchao
developers = betty, james

# 除了admin分组有rw权限,别的用户对根’/’ 都没有权限
# 也就是 admin 对根下所有版本库都有权限
[/]
*= 
@admin = rw

# 版本库1
[repos1:/]
@developers = rw

[repos1:/public]
mark = rw

# 版本库2
[repos2:/]
mark = rw

说明:

Admin组对所有版本库具有rw权限
Developers 组对版本库1 的根具有 rw权限
Mark用户对 版本库1的public具有rw ;对版本库2的根具有rw权限

作者:全栈运维