本文目录一览:
- 1、SVN 认证配置无效
- 2、SVN冲突和权限的设置
- 3、svn路径可以有中文吗
- 4、svn权限设置
- 5、Linux中svn服务器安装与使用
- 6、SVN权限设置
SVN 认证配置无效
在使用svn检出项目时偶尔会出现认证配置无效的错误,通过以下几种办法应可以解决:
1.检查authz文件的权限设定。着重检查分组是否有效?用户名是否拼写错误?每条配置最前是否有空格?
2.检查项目自身的svnserve.conf重点realm是否有拼写错误?anon-access和auth-access是否配置错误?
3.svn服务是否正确开启?端口是否被占用?
这不是什么复杂问题,如果你是多项目公用一套权限配置的话多检查分组设定基本都能拍出问题。
多个svn库共享一组认证时有可能出现以下情况,检查 authz 文件
SVN冲突和权限的设置
两个程序员在短时间内对同一个文件进行修改,并进行提交,后提交的文件会尝试覆盖先提交者的文件
我记得,我当时在9:30丝路贵人开发微信商城,就是当你写登录模块,姚笛9:00写登录模块,两者冲突。
我的样式覆盖了姚笛的样式
令牌解决法,我们看权谋剧,假设版本是皇位,要拥有皇位,就必须具有玉玺,这个玉玺就是令牌
执行update操作是合并不是覆盖
关闭匿名账号,开启密码
anon-access=none
password-db = passwd
修改passwd
jingdong= jingdong123
tom = tom123
修改auth
#给shop仓库账号设置权限
#[仓库地址]
#[shop:/] 给多个仓库中shop仓库账号设置权限。
#svnserve -d -r D:\phpStudy\WWW\SVN\app\shop
#[/] 给当前单一的仓库设置权限
# svnserve -d -r D:\phpStudy\WWW\SVN\app\shop 启动单一的仓库服务
#具体权限:r(d读) write(写)
[shop:/]
tpm=rw
如图所示:
点击右键-----》Update
r 读的权限
w 写的权限
给一个组别设置权限
在authz写入[groups]
php=php1,php2,php3,php5
[shop:/]
tpm=rw
@php=rw
show log查看每个人的大致工作
模拟真实环境使用svn
check----index.php
svn路径可以有中文吗
svn的授权文件authz默认是不支持中文路径的,因此在精确控制中文文件夹的授权时往往会出错。要解决这个问题,需要用UltraEdit(注意不要用记事本或写字板)把authz打开,然后另存在为UTF-8 -无BOM,如下图:-svn的授权文件authz
然后把另存在的authz文件覆盖原有的authz文件。
用记事本或写字板打开authz文件后另存为utf8编码的文件的话,文件开头会有windows特有的unicode标记——ef bb bf,而这三个字节是svn所不能识别的。所以不能用记事本或写字板打开authz文件另存。-svn的授权文件authz
以后要编辑authz文件也需要用UltraEdit进行编辑和保存,用记事本或写字板编辑后保存也会自动带上windows特有的unicode标记。
svn权限设置
一、为了保障高安全系数,必须设置匿名用户无任何权限,取消匿名登录
找到: SVN安装目录\conf\svnserve.conf
找到:###anon-access = read
将前面的注释去掉,并将read改为:none
即使:anon-access=none表示匿名登陆下的用户权限为空。即:系统不支持匿名登陆
说明:
anon-access = read匿名登陆下可以只读文件,即:文件修改后无法提交到服务器,一般不想让匿名用户访问,所以设置成none。
auth-access = write通过验证的用户可以读和写
password-db =password用户保存文件的名称
authz-db =authz权限管理文件 这个是非常重要的,如果我们要对整个工程的文件进行权限分配的时候,就必须将这个行文件前面注释掉,否则即使我们在权限配置文件里面进行再多的配置都是无效的。
二、权限分配
然后我们在authz文件下面进行权限的分配
找到: SVN安装目录\conf\authz
权限文件中有两个重要的概念分别是groups组的创建(红色部分)与文件夹权限的划分(绿色部分)
注:书写要领
等于号两侧必须有空格
权限说明:
r = read读
w = write写(写即包含读的权限)
* =代表上述人物以外的人物权限什么都不能做
/代表根目录
1.描述组的权限时,在组名前加@
2.组内人数大于2人时,最后一人账户名称前不用加(我曾经加过且无法登陆)
3.根目录下有多个文件夹,且分别对每个文件夹进行权限设定时,不要忘记根目录至少设定r权限,否则会因为权限冲突导致无法登陆
当变更该配置文件后,若未出现登录对话框,直接出现下图,则意味着权限配置有冲突,需要调整
Linux中svn服务器安装与使用
直接开放svnserve的端口就可以了,默认端口是3690
如果selinux开启了,它会阻止文件的写入,从仓库中拉去正常,但上传的时候会出现 不能打开文件"***/db/txn-current-lock"权限不够
如果出现semanage未定义,可以参考 CentOS7 中安装semanage来设置selinux
仓库目录为 /home/svn/test ,如果要删除版本仓库直接删除目录就可以了 rm -rf /home/svn/test
在仓库目录 /home/svn/test 的 conf 目录中会有三个文件
修改配置
修改配置添加账号密码,以 账号=密码 的格式配置, = 号二边尽量不要存在空格
权限管理分为组管理和目录权限管理
多个创建可以共用一套账号和密码权限管理。也可以用不同的账号密码管理,如果用不同的配置少单仓库类似,修改每个仓库conf下的账号和权限文件就可以了。下面说一下共用账号权限文件的情况。
在仓库目录 /home/svn 目录中创建authz文件和passwd文件。
修改配置各仓库下conf/svnserve.conf。将password-db和authz-db指向/home/svn/目录下的文件
修改/home/svn/passwd配置添加账号密码,以 账号=密码 的格式配置, = 号二边尽量不要存在空格
修改/home/svn/authz权限管理分为组管理和目录权限管理
如果单仓库以/home/svn启动,此时访问的地址会有仓库名。 svn://ip/test
访问地址分别为:
编辑 /etc/sysconfig/svnserve 文件,修改 OPTIONS="-r /var/svn" 参数改为svn仓库目录 OPTIONS="-r /home/svn"
设置开机启动
修改后也可以用systemctl来启动、停止、重启
svnserve启动后,修改authz和passwd文件是时实生效的,并不需要重启服务
有时随着仓库越来越多,权限配置也越来越多时,会出现一些配置错误,导致访问时出现无法加载权限验证之前的错误,这个时候我们可以将svn服务器的日志打印出来,看些配置出错了。
停止svn服务器,重新附加log-file参数输入日志到指定文件
SVN权限设置
1、 本文档适用于对Subvesion的自带服务svnserve进行权限配置,全部在authz文件中完成。
2、 如果要对含有中文的目录或文件进行管理或分配时,需要将该文件保存为UTF-8格式,微软的记事本保存为UTF-8格式无效,所以不要用。可用如UltraEdit或EditPlus等软件完成,保存时,格式应选择UTF-8 NO BOM。-svn的授权文件authz
3、 权限分配时,应遵守从根目录到子目录、从设置最广泛权限到最精细权限、从只读权限到读写权限设置原则,即从根目录开始设置最广泛的访问权限,然后逐步设置下属子目录的访问权限。提示:目录的访问权限既可以分配给组,也可以分配指定用户。-svn的授权文件authz
现举例进行说明:
启动服务:服务应指向所有版本库的根目录,本例中为D:\SVN,命令如下:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN" displayname= "SVNService" depend= Tcpip start= auto-svn的授权文件authz
项目情况:D盘根目录下有一个文件夹SVN,在该文件夹中有jsyxv3、svntest两个版本库(可以有更多个),这些版本库共享使用同一个权限配置文件,目录结构如下:
D:\SVN
|---jsyxv3 (项目一,子目录略)
|---svntest (项目二,子目录略)
|---authz (共享的权限配置文件)
|---passwd (共享的密码文件)
#=====配置开始=====
#分组:
[groups]
group_admin = wws,aaa,bbb
group_user1 = sj,ccc
group_user2 = sy,dd,eeee
group_user3 = lxt
group_user4 = ss
#设置对根(即SVN)目录下,所有版本库的访问权限
[/]
* = r #所有登录用户默认权限为只读
@group_admin = rw #可以分配给组,该组有读写权限
wws = rw #也可以像这样分配给指定用户
#以下将对各版本库的及其目录进行权限分配
[jsyxv3:/] #设置对jsyxv3版本库中,所有项目的访问权限
* = #未授权用户没有任何权限
@group_user1 = rw
[jsyxv3:/程序管理] #设置对jsyxv3版本库中程序管理目录的访问权限
* = #未授权用户没有任何权限
@group_user2 = rw
[jsyxv3:/项目管理] #设置对jsyxv3版本库中项目管理目录的访问权限
* = #未授权用户没有任何权限
@group_user3 = rw
[svntest:/] #设置对svntest版本库中,所有项目的访问权限
* = #未授权用户没有任何权限
@group_user1 = rw
[svntest:/程序管理] #设置对svntest版本库中程序管理目录的访问权限
* = #未授权用户没有任何权限
@group_user2 = rw
@group_user3 = rw
[svntest:/项目管理] #设置对svntest版本库中项目管理目录的访问权限
* = #未授权用户没有任何权限
@group_user4 = rw
#=====配置结束=====
4、 最后重要提示:
4.1启动的服务与客户端检出的关系:
4.1.1 如果启动的服务指向一个具体的版本库,如红字部分描述:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN/svntest" displayname= "SVNService" depend= Tcpip start= auto-svn的授权文件authz
则客户端检出的地址应为:svn://192.168.0.1/
4.1.2 如果启动的服务指向的是多个版本库的父目录,如红字部分描述:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN" displayname= "SVNService" depend= Tcpip start= auto-svn的授权文件authz
则客户端检出的地址应为:svn://192.168.0.1/svntest
4.2如果权限管理完成时,对各版本库还未完成导入工作,请记得使用对SVN目录有读写权限的用户身份进行操作,否则有可能会提示操作失败(因为权限不够)。