Ubuntu部署svn1.14.3及权限控制

1:先sudo apt update 执行更新repo源

2:sudo apt install -y subversion 使用apt安装 Subversion

3:安装完成后执行svnserve --version查看安装的版本

4:创建svn仓库

目录自己定义

创建svn仓库svnadmin create /process/svn/repositories/test_1_svn(这个可自定义)

5:把这个目录下的file权限给到svn:svn 如果没svn user可以新建

我这是部署测试,实际操作svn要给一个权限较高的user,防止被别人误操作。

groupadd svn useradd -g svn -m -s /bin/bash svn

解释

参数含义
groupadd svn创建svn用户组
useradd -g svn创建svn用户,并加入svn
-m同时创建用户的家目录/home/svn
-s /bin/bash指定用户的登录 Shell 为 bash

创建完svn user后递归给权限

chown -R svn:svn process/svn/repositories/test_1_svn

chmod -R 770 process/svn/repositories/test_1_svn

6:下面开始配置svn仓库的权限

配置文件在: process/svn/repositories/test_1_svn/conf

  • conf目录:SVN版本库的配置文件,版本库的访问账户、权限等
  • db目录:存放所有版本控制的数据存放文件。
  • format文件:一个文本文件,文件中只包含一个整数,表示当前文件库配置的版本号。
  • hooks目录:放置hook脚本文件的目录。
  • locks目录:用来追踪存取文件库的客户端。

authz:模板里定义「用户 / 用户组」对仓库不同目录的读写权限,精准控制谁能看、谁能改

passwd:存储所有 SVN 登录用户名 + 明文密码(老版本 svnserve 为明文)

svnserve.conf:(SVN 服务主配置文件,核心开关)

authz和passwd可以参考配置,权限的大小取决authz里怎么写的

rw:读写权限。

r:只读权限。

*:表示所有其他用户

anon-access = none

auth-access = write

password-db = passwd

authz-db = authz

realm = /process/svn/repositories/test_1_svn

7:配置完权限可以启动服务了

svnserve -d -r /process/svn/repositories/

  • -d:daemon 后台守护进程模式,开机 / 执行后后台常驻,不占用当前终端
  • -r:指定 SVN 仓库根目录,客户端访问时不用写完整长路径,直接svn://服务器IP/test_1_svn就能访问仓库

ps -ef | grep svnserve

现在发现修改完配置文件(zuthz和passwd)后服务应该是实时更新的,自动读取配置文件

8:配置svn开机自启动

编辑:/etc/rc.d/rc.local

echo "svnserve -d -r /process/svn/repositories" >> /etc/rc.d/rc.local

chmod +x /etc/rc.d/rc.local

9:配置防火墙

ufw allow 3690/tcp

ufw reload

这样就可以从Local和远程ip测试svn是否正常了

svn list svn ://local

svn list svn ://ip/目录