码迷,mamicode.com
首页 > 其他好文 > 详细

版本管控工具-SVN

时间:2021-02-19 13:26:55      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:for   stat   serve   password   cti   anon   --   touch   ORC   

版本管控工具-subversion

一、SVN服务器搭建

1.1 安装Subversion

yum install -y subversion
技术图片

1.2 版本查看

svn --version
技术图片

1.3 创建仓库

[root@localhost ~]# mkdir -p /home/svn/
[root@localhost ~]# cd /home/svn/
[root@localhost svn]# svnadmin create test
[root@localhost svn]# ll
总用量 0
drwxr-xr-x. 6 root root 86 2月  14 15:57 test

1.4 配置SVN

svnserve配置文件通常由3个文本文件组成:

技术图片
  • svn服务配置文件:在conf目录下,文件名为svnserve.conf
  • 用户名口令文件:在conf目录下,文件名为passwd
  • 权限配置文件:在conf目录下,文件名为authz

1.4.1 svnserve.conf文件

该文件由一个[general]配置段组成。格式:<配置项>=<值>**

配置项分为以下5项:

  • anon-access 控制非鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。即"write"为可读可写,"read"为只读,"none"表示无访问权限。缺省值:read

  • auth-access 控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。即"write"为可读可写,"read"为只读,"none"表示无访问权限。缺省值:write

  • password-db 指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:passwd

  • authz-db 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。除非指定绝对路径,否则文件位置为相对conf目录的相对路径。缺省值:authz

  • realm 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件。缺省值:一个UUID(Universal Unique IDentifier,全局唯一标示)。

将svnserve.conf修改成如下内容:

#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限 
auth-access=write
#密码数据库的路径 
password-db=passwd
#访问控制文件 
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字 
realm = /home/svn/test

说明:

设定非鉴权用户无权限访问该版本库;鉴权用户可对版本库进行读写;用户名口令文件为conf目录下的passwd,权限配置文件为版本库conf目录下的authz,版本库的认证域为:/home/svn/test

1.4.2 passwd文件

该文件由一个[users]配置段组成,格式:<用户名>=<口令> 注:口令为未经过任何处理的明文。

修改成如下:

[users]  
admin = admin  
test = test

1.4.3 authz文件

该文件由[groups]配置段和若干版本库路径权限段组成

[groups]配置段格式:<用户组>=<用户列表>

用户列表由若干个用户组或用户名构成,用户组或用户名之间用逗号","分隔,引用用户组时要使用前缀"@"

版本库路径权限段格式:

[<版本库名>:<路径>]如版本库abc路径/tmp的版本库路径权限段的段名为"[abc:/tmp]"。

可省略段名中的版本库名。若省略版本库名,则该版本库路径权限段对所有版本库中相同路径的访问控制都有效。如:[/tmp]

版本库路径权限段中配置行格式有如下三种:
<用户名> = <权限>
<用户组> = <权限>
* = <权限>
其中,"*"表示任何用户;权限的取值范围为‘‘、‘r‘和‘rw‘,‘‘表示对该版本库路径无任何权限,‘r‘表示具有只读权限,‘rw‘表示有读写权限。

注意:每行配置只能配置单个用户或用户组。

示例:

技术图片

每一个section都命名了一个版本库(repository)和其对应的路径(path),option name是已认证的用户名(即在passwd文件中定义的用户),而option value是用户对仓库指定路径的访问级别,分为r(read-only)只读和rw(read/write)读写这两种。注意下,特别强调每一部分配置的名称可以是[repos-name:path]或[path]这两种格式。

搞清楚了这些概念后,修改配置文件如下:

####在最后面增加如下内容,[/] 是相对svn库src目录下的访问路径,可根据路径分配目录访问权限:
[/]
admin = rw
* =
 
####如下是配置test用户只有对svn/test的目录,具有可读写权限
[/test]
test = rw
* =

总结:

? SVN管理员可以通过这3个配置文件设置svnserve服务的用户名口令,以及对版本库路径的访问权限。这些配置文件保存后就立即生效,不需要重启svnserve服务。

1.5 启动SVN

svnserve -d -r /home/svn/test/

1.6 检测进程

[root@localhost conf]# ps -ef | grep svn
root      17089      1  0 16:13 ?        00:00:00 svnserve -d -r /home/svn/test/
root      17242   8526  0 16:14 pts/0    00:00:00 grep --color=auto svn
[root@localhost conf]#

1.7 检测端口

[root@localhost conf]# netstat -ln |grep 3690
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN
[root@localhost conf]#

1.8 停止SVN

pkill -9 svn

1.9 客户端测试SVN

技术图片 技术图片

1.10 添加文件测试

技术图片 技术图片

1.11 关闭SELinux

1.11.1 查看状态

[root@localhost svn]#  getenforce
Enforcing
[root@localhost svn]# /usr/sbin/sestatus -v
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

Process contexts:
Current context:                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Init context:                   system_u:system_r:init_t:s0
/usr/sbin/sshd                  system_u:system_r:sshd_t:s0-s0:c0.c1023

File contexts:
Controlling terminal:           unconfined_u:object_r:user_devpts_t:s0
/etc/passwd                     system_u:object_r:passwd_file_t:s0
/etc/shadow                     system_u:object_r:shadow_t:s0
/bin/bash                       system_u:object_r:shell_exec_t:s0
/bin/login                      system_u:object_r:login_exec_t:s0
/bin/sh                         system_u:object_r:bin_t:s0 -> system_u:object_r:shell_exec_t:s0
/sbin/agetty                    system_u:object_r:getty_exec_t:s0
/sbin/init                      system_u:object_r:bin_t:s0 -> system_u:object_r:init_exec_t:s0
/usr/sbin/sshd                  system_u:object_r:sshd_exec_t:s0
[root@localhost svn]#

1.11.2 临时关闭

##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
setenforce 0

1.11.3 永久关闭

#将SELINUX=enforcing改为SELINUX=disabled 
#设置后需要重启才能生效
vi /etc/selinux/config

二、安装HTTPD支持HTTP访问

2.1 安装httpd、mod_dav_svn

yum install -y httpd mod_dav_svn
技术图片

2.2 检查Apache、mod_dav_svn是否安装成功

[root@localhost conf]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Nov 16 2020 16:18:20
[root@localhost conf]# find / -name mod_dav_svn.so
/usr/lib64/httpd/modules/mod_dav_svn.so
[root@localhost conf]# find / -name mod_authz_svn.so
/usr/lib64/httpd/modules/mod_authz_svn.so
[root@localhost conf]#

2.3 修改配置文件

地址为/etc/httpd/conf.d/subversion.conf(没有则新建),內容为:

[root@localhost conf]# touch /etc/httpd/conf.d/subversion.conf
[root@localhost conf]# cat /etc/httpd/conf.d/subversion.conf 
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
    DAV svn
    SVNParentPath /home/svn
    AuthType Basic
    AuthName "Authorization SVN"
    AuthzSVNAccessFile /home/svn/authz
    AuthUserFile /home/svn/passwd
    Require valid-user
</Location>

2.4 创建用户文件passwd

[root@localhost svn]# touch /home/svn/passwd
[root@localhost svn]# ll
总用量 0
-rw-r--r--. 1 root root  0 2月  14 16:42 passwd
drwxr-xr-x. 6 root root 86 2月  14 15:57 test
[root@localhost svn]# htpasswd /home/svn/passwd admin
New password:
Re-type new password:
Adding password for user admin
[root@localhost svn]# ll
总用量 4
-rw-r--r--. 1 root root 44 2月  14 16:42 passwd
drwxr-xr-x. 6 root root 86 2月  14 15:57 test
[root@localhost svn]# cat passwd
admin:$apr1$3jlXPfui$fVb9lAnF9ttbZ0U2khvMf1
[root@localhost svn]#

htpasswd命令是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。

语法
htpasswd(选项)(参数)

选项

-c:创建一个加密文件;
-n:不更新加密文件,只将加密后的用户名密码显示在屏幕上;
-m:默认采用MD5算法对密码进行加密;
-d:采用CRYPT算法对密码进行加密;
-p:不对密码进行进行加密,即明文密码;
-s:采用SHA算法对密码进行加密;
-b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
-D:删除指定的用户。

参数

用户:要创建或者更新密码的用户名;
密码:用户的新密码。

实例

利用htpasswd命令添加用户
#在bin目录下生成一个.passwd文件,用户名admin,密码:pwdadmin,默认采用MD5加密方式。

htpasswd -bc .passwd admin pwdadmin

在原有密码文件中增加下一个用户
#去掉-c选项,即可在第一个用户之后添加第二个用户,依此类推。

htpasswd -b .passwd test 123456

不更新密码文件,只显示加密后的用户名和密码
#不更新.passwd文件,只在屏幕上输出用户名和经过加密后的密码。

htpasswd -nb test 123456

利用htpasswd命令删除用户名和密码

htpasswd -D .passwd test

利用htpasswd命令修改密码
#即先使用htpasswd删除命令删除指定用户,再利用htpasswd添加用户命令创建用户即可实现修改密码的功能。

htpasswd -D .passwd test
htpasswd -b .passwd test 123456

2.5 创建权限文件authz

[root@localhost svn]# cp /home/svn/test/conf/authz /home/svn/
[root@localhost svn]# ll
总用量 8
-rw-r--r--. 1 root root 1333 2月  14 16:44 authz
-rw-r--r--. 1 root root   44 2月  14 16:42 passwd
drwxr-xr-x. 6 root root   86 2月  14 15:57 test
[root@localhost svn]#

2.6 配置apache对SVN目录权限

[root@localhost svn]# chown -R apache:apache test/
[root@localhost svn]# ll
总用量 8
-rw-r--r--. 1 root   root   1333 2月  14 16:44 authz
-rw-r--r--. 1 root   root     44 2月  14 16:42 passwd
drwxr-xr-x. 6 apache apache   86 2月  14 15:57 test
[root@localhost svn]#

2.7 配置httpd

# 修改 AllowOverride None改为AllowOverride All
vim /etc/httpd/conf/httpd.conf

2.8 启动Apache

Apache常用命令如下:

httpd -v	      #查看已经安装的httpd的版本
rpm -qa | grep httpd  #查看是否已经安装了httpd
ps -ef | grep httpd   #查看httpd的进程
service httpd status  #查看httpd的运行状态
service httpd stop    #可以停止httpd
service httpd start   #可以启动httpd
技术图片

2.8.1 配置服务器名称

# 将服务器名称改为localhost
vim /etc/httpd/conf/httpd.conf
# 重启HTTPD重启
systemctl restart httpd
技术图片 技术图片

2.8.2 测试页面

技术图片

2.9 登录页面

技术图片 技术图片

2.10 检出项目

技术图片 技术图片 技术图片

参考链接

  1. centos7搭建SVN并配置使用http方式访问SVN服务器
  2. CentOS7+Apache+SVN安装配置,并通过HTTP方式访问
  3. CentOS 7 安装配置SVN服务器
  4. Centos Svn服务器搭建
  5. https://blog.csdn.net/a13568hki/article/details/103428237
  6. CentOS7关闭SELinux

版本管控工具-SVN

标签:for   stat   serve   password   cti   anon   --   touch   ORC   

原文地址:https://www.cnblogs.com/shuangxinyuan/p/14410346.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!