Linux 下 svn 多个项目多用户分配

安装步骤如下:

1、yum install subversion

2、输入rpm -ql subversion查看安装位置,如下图:

输入 svn –help可以查看svn的使用方法

需求

开发服务器搭建好SVN服务器,不可能只管理一个工程项目,如何做到不在一个项目中的开发人员不能访问其它项目中的代码,做好技术保密工作。

代码仓库有三个仓库:project1,project2,project3

假设人员有6个人:eg1,eg2,eg3,eg4,eg5,eg6

eg1,eg2,只能访问project1;

eg3,eg4,只能访问project2;

eg5,eg6,只能访问project3;

3、创建svn版本库目录

mkdir /var/svn

cd /var/svn

//创建三个代码仓库

svnadmin create project1

svnadmin create project2

svnadmin create project3

执行命令后project1下会生成如下文件

进入conf目录(该svn版本库配置文件)

authz文件是权限控制文件

passwd是帐号密码文件

svnserve.conf SVN服务配置文件

4.新建个目录统一管理用户权限

mkdir /var/svn/conf

//把两个权限配置文件复制到 /var/svn/conf路径下统一管理所有代码仓库

cd /projcet1/conf

cp authz passwd /var/svn/conf

5.修改配置文件

vi svnserve.conf

打开下面的几个注释(同时要删除#后面的空格):

anon-access = none

auth-access = write #授权用户可写

password-db = /var/svn/conf/passwd #使用哪个文件作为账号文件 统一使用密码文件

authz-db = /var/svn/conf/authz #使用哪个文件作为权限文件

realm = project1 # 认证空间名,版本库所在目录 权限域名,很重要,写你的工程名

同时把project2的svnserve.conf也改了

anon-access = none

auth-access = write

password-db = /var/svn/conf/passwd

authz-db = /var/svn/conf/authz

realm = project2

同时把project3的svnserve.conf也改了

anon-access = none

auth-access = write

password-db = /var/svn/conf/passwd

authz-db = /var/svn/conf/authz

realm = project3

6.修改两个权限管理文件:

vi passwd

//用户名 = 密码

[users]

eg1 = 123

eg2 = 123

eg3 = 123

eg4 = 123

eg5 = 123

eg6 = 123

保存

注意:对用户配置文件的修改立即生效,不必重启svn服务。

vi authz

[groups] //分组

admin = eg1,eg2

guest = eg3,eg4

guest1 = eg5,eg6

[/]

* = #以上没有定义的用户都没有任何权限(添加自己root账户)

[project1:/] //工程1的访问控制,guest1,2无法访问

@admin = rw

[project2:/]

@guest = rw

[project3:/]

@guest1 = rw

注意:对权限配置文件的修改立即生效,不必重启svn。

7.启动svn服务

/usr/bin/svnserve -d -r /var/svn/

注意:不要使用系统提供的 /etc/init.d/svnserve start 来启动,因为系统默认的启动脚本中没有使用 –r /svn/project参数指定一个资源。这种情况下启动的svn服务,客户端连接会提示“svn: No repository found in ‘svn://192.168.11.229/project’ ”这样的错误。

默认svn服务器端口是3690。

杀死svn服务:

ps -ef|grep svn

root 4642 1 0 16:08 ? 00:00:00 svnserve -d -r /var/svn/

root 4692 3676 0 16:13 pts/2 00:00:00 grep svn

kill -9 4642

若要使用/etc/init.d/svnserve 脚本,可以修改start()函数部分,如下:

start() {

[ -x $exec ] || exit 5

[ -f $config ] || exit 6

echo -n $"Starting $prog: "

daemon --pidfile=${pidfile} $exec $args -r /var/svn

retval=$?

echo

[ $retval -eq 0 ] && touch $lockfile

return $retval

}

完成

8.、在windows上测试

新建一个测试文件夹,在该文件夹下右键选择 SVN checkout如下图(要事先安装TortoiseSVN):

svn://192.168.1.12/project1

svn://192.168.1.12/project2

svn://192.168.1.12/project3

问题:不能连接?

解决办法:

是因为:修改svnserve.conf 文件时。解开注释时要注意,同时要删除#后面的空格。也就是说要全部顶置。

然后认证失败是要注意前面的[/]. 然后重启下SVN就好了

问题:svn 日志文件显示时间为1970-01-01 No data

解决办法:

此问题主要出现在svnserve文件中的anon-access访问权限的设置问题上。

anon-access

控制非鉴权用户访问版本库的权限。取值范围为”write”、”read”和”none”。

即”write”为可读可写,”read”为只读,”none”表示无访问权限。

缺省值:read

anon-access = none时,按照文档中注释:禁止所有匿名访问,也就是说如果不在authz-db中开放访问的用户,是不会允许读写版本日志的,故系统对日志的读写也纳入禁止访问范围,

在查看日志时,出现时间日期显示为1970-01-01, 日志信息显示no data。也就是这个原因。

所以在设置svnserve中的访问权限时,请设置为 anon-access = read,只读模式。这样的话,日志文件即可显示正常。

但是经过亲测 应该设置为anon-access = none

问题: 命令行方式连接,提示svn: No repository found in ‘svn://192.168.11.229/project’错误?

解决:启动svn服务的时候没有使用-r /var/svn参数,没有指明资源库的具体路径。使用# svnserve -d -r /var/svn/ 命令来启动就可以了,不要使用/etc/init.d/svnserver脚本。

问题: 执行命令# svn co svn://192.168.11.229/project时提示“svn: Authorization failed”错误?

解决:一般这种授权失败的错误原因都来自conf/authz文件的配置

原文地址:https://www.cnblogs.com/liuliu-word/p/9580084.html

时间: 2024-08-29 03:42:46

Linux 下 svn 多个项目多用户分配的相关文章

linux下svn定时更新项目

方法一.用shell脚本定时更新项目 1.进入网站的根目录,假设项目位置放在/var/www/test cd /var/www/test 2.建立脚本文件update.sh,分两步进行.首先利用touch命令创建,之后使用vim进行编辑. touch update.sh vim update.sh 输入以下内容 #!/bin/sh while true do svn update --username 你的svn用户名 --password 你的svn密码 sleep 60 done 这里我设置

解决Linux下Svn检出Windows SVN服务器上项目SSL handshake failed: SSL error: Key usage violation in certificate has been detected.

在Linux上检出windows SVN服务器上项目时出现了SSL handshake failed: SSL error: Key usage violation in certificate has been detected.的错误. 最后通过从网上检索找到了一个答案: 可以同时解决掉在Ubuntu上和CentOS上检出失败的问题. 在Windows注册表中加入注册项: 32位机器: [HKEY_LOCAL_MACHINE\SOFTWARE\VisualSVN\VisualSVN Serv

linux 下 svn 服务器搭建与配置

Subversion是一个自由,开源的版本控制系统,可以记录每一次文件和目录的修改情况.这样就可以籍此将数据恢复到以前的版本,并可以查看数据的更改细节. linux 下 svn的搭建 首先安装 subversion yum  install -y subversion 使用rpm -qa subversion 查看是否安装完成 安装完成后进行配置 首先在home 下建立svn的数据目录和密码认证目录 说明: svndata 目录用于存放项目目录,svnpassw 目录存放密码及认证文件 在svn

Linux下SVN服务器安装配置及客户端安装说明

原文地址:http://wenku.baidu.com/link?url=h3dVAMx4azpOXEND5HQEE6nliE8-zc0GSQ03yv4cUs1vXMALXF64UsK7kT7kXm_zf7k6J6EHSszq4ZU_Tyn0JimTKV8SzI9Ac4veaxCG3im Linux 下 SVN 服务器安装配置 第一章 安装 1. 采用源文件编译安装.源文件共两个,为: subversion-1.6.1.tar.gz ( subversion 源文件) subversion-de

[转载]linux下svn命令使用大全

原文地址:http://blog.chinaunix.net/uid-22150747-id-189264.html 最近经常使用svn进行代码管理,这些命令老是记不住,得经常上网查,终于找了一个linux下svn命令使用大全: 1.将文件checkout到本地目录 svn checkout path(path是服务器 上的目录)例如:svn checkout svn://192.168.1.1/pro/domain简写:svn co 2.往版本库中添加新的文件 svn add file例如:s

linux下SVN忽略文件/文件夹的方法

linux下SVN忽略文件/文件夹的方法 假设想忽略文件temp 1. cd到temp所在的目录下: 2. svn propedit svn:ignore . 注意:请别漏掉最后的点(.表示当前目录),如果报错请看下面 3. 打开的文件就是忽略列表文件了(默认是空的),每一行是一项,在该文件中输入temp,保存退出 4. svn st查看状态,temp的?状态已经消除了 如果在svn propedit svn:ignore .时报错:svn: None of the environment va

Linux下SVN server 的使用及权限配置

[Linux下SVN server 的使用及权限配置] 参考:http://www.cnblogs.com/heinoc/p/3805779.html

Linux下SVN账户密码保存设置

Linux下用SVN进行更新等操作时,总是提示输入用户名和密码,很不方便.因此搜了下解决办法,总结如下: 打开SVN配置文件: vim /home/<user>/.subversion/config 找到如下代码: ### Set store-passwords to 'no' to avoid storing passwords in the ### auth/ area of your config directory. It defaults to 'yes', ### but Subv

linux下svn常用指令

windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说.主要说说linux下svn的使用,因为linux下大部分的操作都是通过命令行来进行,所以必须得掌握linux下svn的常用指令.当然linux下也有模仿TortoiseSVN的linux X程序,例如RabbitVCS,模仿程度很高,但很容易拖慢X,因此不推荐. (如果是第一次提交文件,很可能会出现"svn:'.'不是工作副本",即当前目录不是工