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/目录
