svn权限设置

svn权限设置,第1张

一、为了保障高安全系数,必须设置匿名用户无任何权限,取消匿名登录

找到:  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权限,否则会因为权限冲突导致无法登陆

当变更该配置文件后,若未出现登录对话框,直接出现下图,则意味着权限配置有冲突,需要调整

(一)安装

Windows环境下面分了CollabNet / Tigris.org(Apache2.2和Apache2.0) / SlikSVN / VisualSVN 5个链接,我选的是Tigris Apache2.2,下载一个目前最新的Setup-Subversion-1.6.6.msi,点击,一路安装即可,很简单。

开始菜单-》运行-》输入Cmd回车,敲“svn --version --quiet”,会得到SVN的版本号。

(二)配置

1、创建repository

Rrepository是存储数据的地方。

例如要在F:\svnroot下创建repository,就使用命令行svnadmin create f:\svnroot。如果执行正确的话,会在F盘下多一个SVNROOT的目录,目录下有4个目录和2个文件。

2、启动SVN服务

使用命令行 svnserve -d -r f:/svnroot,这样外部就可以它能够过客户端来访问了。

我运行完才发现,这样cmd窗口还不得不一直开着,很难看,当然一般大公司的代码服务器是24小时开着的。

上网搜了一下,也可以作为一个服务自动启动的。执行脚本 sc create svn binpath= "\"d:\Program Files\Subversion\bin\svnserve.exe\" --service -r\"f:/svnroot\"" displayname= "Subversion Server" depend= Tcpip start= auto 就可以将svnserve程序作为服务载入。安装路径和存储数据的目录要根据自己的情况修改。

执行完这个脚本,可以去管理工具-》控制面板-》服务那里找找Subversion Server,如果没启动就启动

3、基本设置

修改f:|svnroot\repos\conf\svnserve.conf,注释很详细。

[general]

anon-access = none

auth-access = write

password-db = passwd

authz-db = authz

realm = My First Repository

[sasl]

# use-sasl = true

# min-encryption = 0

# max-encryption = 256

期中,anon-access = none表示要用户名和密码,password-db = passwd表示passwd是存身份验证的用户名和密码。sasl,就是加密访问用的,一般也可以不用。

4、用户管理

在f:|svnroot\repos\conf\passwd里添加有权限的用户名和密码。例如添加用户yobin,密码123456,就这样:

[users]

# harry = harryssecret

yobin = 123456

hh = 111

ss = 222

5、分组管理和权限设置

如果是所有文件对用户都可见的话,上面几步也足够用了。但要想对一些人可见,一些人不可见的话,就要去修改authz文件了。

&别名:别名的引用

@用户组名:某组用户

$authenticated:所有已授权用户

$anonymous:匿名用户

* : 任何人

r:写权限

rw:读写权限

:不能访问(空,什么都不写)

设置用户权限的时候,'='左侧代表用户名称,可以是实际用户名,也可以是定义的用户组名,也可以是别名,但要用'@'作为前缀,或者是所有用户'*'。'='右侧代表设置的权限'r'、'rw'或者为空即代表用户对于该目录无任何权限。

authz文件中对版本库路径的表示方法。用'[/]'来表示版本库的根目录,如果有子目录foo,设置该目录权限时用'[/foo]'即可,其他任何目录都以'/'为版本根目录进行表示。注意了,别用”\“!!!

用户某个目录的权限是向子目录递归的。如果用户对于/foo目录有读写权限,则该用户对于foo目录下的所有子目录都有读写权限。如果不设置最上层的目录没有设置权限,那么就相当于不设置,禁止访问。

权限分配,只可以分配到某个目录,而不能到某个文件。

开发过程中,需要经常将SVN服务器上的代码同步到测试服务器上,一般做法,需要人工手工更新,这样很浪费工夫。下面的脚本为svn server的钩子程序,放在svn服务器上,只要代码更新,就会自动提交的测试服务器上。

使用条件:

1、SVN主机是WIN系统,如果要在LINUX的SVN主机上用,需要修改下面的代码为sh脚本,道理类似,代码不同。有需要的自行更改吧。

2、SVN主机上需要安装完整版的PUTTY安装包,而不是一个EXE.

3、测试服务器可以用putty登录

@echo off

setlocal enableDelayedExpansion

rem 本脚本实现将SVN服务器A(win环境)上提交的代码,自动上传(通过pscp)到测试环境的服务器B(linux)上,如果SVN在LINUX环境下,根据本代码自行调整。

rem svn服务器上版本库地址

set reposLoc=%1

set REV=%2

rem ---------------------------------------------------------------------- 配置开始

rem svn服务器上putty的路径

set puttyPath="D:\Program Files (x86)\PuTTY"

rem 测试环境putty登录的用户名

set username=root

rem 测试环境putty登录的密码

set password=password

rem 测试环境IP

set host=10.1.1.1

rem 测试环境代码根地址

set remoteRootPath=/var/www/htdocs/test

rem ---------------------------------------------------------------------- 配置结束

cd /d %puttyPath%

rem 遍历提交了的代码

for /f "tokens=2 delims= " %%i in ('svnlook changed %reposLoc%') do (

set "var=%%i"

svnlook cat !reposLoc! !var! > temp.txt

rem 替掉路径中的trunk

set newPath=!var:trunk=!

rem 通过pscp提交到测试服务器

echo y | pscp -l  !username! -pw !password! temp.txt !host!:!remoteRootPath!!newPath!

)

使用方法:

将上面的代码中配置区的变量修改,并将内容保存成bat文件,命名为post-commit.bat,放在SVN服务器上版本库的hooks目录下。提交代码试试看吧。经测试可行。

当然,这个脚本可以再做的牛比点儿,可以针对某个用户的提交做更新,也可以分析SVN提交时的日志,只有当日志中有特定的字符时更新。

另外,由于上面的脚本,只更新当前的提交,所以假设只针对某个用户的提交做更新时,不能只更新当前提交,这样其它用户的提交就落掉了,需要更新整个工程。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11363735.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存