在OpenSUSE上搭建基于Web的SVN服务器Word下载.docx

上传人:b****5 文档编号:16443347 上传时间:2022-11-23 格式:DOCX 页数:14 大小:19.29KB
下载 相关 举报
在OpenSUSE上搭建基于Web的SVN服务器Word下载.docx_第1页
第1页 / 共14页
在OpenSUSE上搭建基于Web的SVN服务器Word下载.docx_第2页
第2页 / 共14页
在OpenSUSE上搭建基于Web的SVN服务器Word下载.docx_第3页
第3页 / 共14页
在OpenSUSE上搭建基于Web的SVN服务器Word下载.docx_第4页
第4页 / 共14页
在OpenSUSE上搭建基于Web的SVN服务器Word下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

在OpenSUSE上搭建基于Web的SVN服务器Word下载.docx

《在OpenSUSE上搭建基于Web的SVN服务器Word下载.docx》由会员分享,可在线阅读,更多相关《在OpenSUSE上搭建基于Web的SVN服务器Word下载.docx(14页珍藏版)》请在冰豆网上搜索。

在OpenSUSE上搭建基于Web的SVN服务器Word下载.docx

集成SVN至Web服务

▪Apache配置

在/usr/local/apache2/conf/http.conf文件结尾,追加如下内容

#Configurationforasubversionrepository

#see/usr/share/doc/packages/subversionforthefulldocumentation

#

<

IfModulemod_dav_svn.c>

Location/repos/test>

DAVsvn

SVNPath/home/SVN/test

#Limitwritepermissiontolistofvalidusers.

<

LimitExceptGETPROPFINDOPTIONSREPORT>

#RequireSSLconnectionforpasswordprotection.

#SSLRequireSSL

AuthTypeBasic

AuthName"

Writeaccessrequiresapassword"

AuthUserFile/srv/svn/user_access/test_passwdfile

Requirevalid-user

/LimitExcept>

/Location>

/IfModule>

注意:

更改配置之后,需要重启Apache。

▪设置SVN访问权限

sudomkdir/srv/svn

sudomkdir/srv/svn/user_access

sudotouch/srv/svn/user_access/test_passwdfile

sudochownroot:

www/srv/svn/user_access/test_passwdfile

sudochmod640/srv/svn/user_access/test_passwdfile

sudo/usr/local/apache2/bin/htpasswd/srv/svn/user_access/test_passwdfileian

基本测试

在如下环境的下,进行了浏览(无需授权)和提交(需要授权):

▪svnoveropenSUSE-11.1

▪TortoiseSVNoverWin32

在如下环境的下,进行了浏览(无需授权):

▪IEoverWin32

▪Chrome-8.0.552.224overopenSUSE-11.1

▪Firefox/3.0.8GTB7.1overopenSUSE-11.1

高级访问控制

参考http:

//svnbook.red-

关闭匿名浏览

在http.conf中,去除<

LimitExcept>

项。

最终结果如下:

SVNRepositoryfortest"

按目录授权

配置

▪定义授权控制描述于文件/home/SVN/test/conf/authz。

具体内容如下:

[aliases]

[groups]

g_admin=ian

g_all=xfy,jyz,ian

[/]

@g_admin=rw

[/trunk]

@g_all=r

[/share]

@g_all=rw

[/private]

ian=r

[/private/rpp]

ian=rw

xfy=r

jyz=r

[/private/mbb]

jyz=rw

[/private/wtt]

xfy=rw

[/private/uii]

▪在http.conf中,使用AuthzSVNAccessFile指定/home/SVN/test/conf/authz为授权控制文件。

AuthzSVNAccessFile/home/SVN/test/conf/authz

#PerlAuthenHandlerIpAuth

测试

▪拥有管理员身份的ian,可以读取整个库。

(写未测试)

ian@Suse-hww:

svn--usernameiancohttp:

//192.168.10.23/repos/test/websvn-test

Passwordfor'

ian'

:

Awebsvn-test/share

Awebsvn-test/trunk

Awebsvn-test/trunk/test.c

Awebsvn-test/trunk/new_from_win32.txt

Awebsvn-test/private

Awebsvn-test/private/uii

Awebsvn-test/private/uii/uii_by_ian.txt

Awebsvn-test/private/mbb

Awebsvn-test/private/rpp

Awebsvn-test/private/wtt

Awebsvn-test/private/wtt/from_xfy.txt

Checkedoutrevision6.

▪对根目录没有任何权限的jzy,不能读取整个库。

rm-rfwebsvn-test/

svn--usernamejyzcohttp:

Authenticationrealm:

http:

//192.168.10.23:

80>

SVNRepositoryfortest

jyz'

svn:

Serversentunexpectedreturnvalue(403Forbidden)inresponsetoOPTIONSrequestfor'

http:

//192.168.10.23/repos/test'

▪对/trunk具有只读权限、对/share具有读写权限的jzy,可以读取这2个目录。

mkdirwebsvn-test

//192.168.10.23/repos/test/trunkwebsvn-test/trunk

//192.168.10.23/repos/test/sharewebsvn-test/share

▪对/private没有任何权限的jzy,不能读取该目录。

//192.168.10.23/repos/test/privatewebsvn-test/private

//192.168.10.23/repos/test/private'

▪对/private/rpp具有只读权限、对/private/rpp具有读写权限的jzy,可以读取这2个目录。

mkdirwebsvn-test/private

//192.168.10.23/repos/test/private/mbbwebsvn-test/private/mbb

//192.168.10.23/repos/test/private/rppwebsvn-test/private/rpp

▪对/private/wtt、/private/uii没有任何权限的jzy,不能读取这2个目录。

//192.168.10.23/repos/test/private/wttwebsvn-test/private/wtt

//192.168.10.23/repos/test/private/wtt'

//192.168.10.23/repos/test/private/uiiwebsvn-test/private/uii

//192.168.10.23/repos/test/private/uii'

▪对/private/mbb具有读写权限的jzy,可以写入该目录。

cat"

textfromjyz"

>

websvn-test/private/mbb/from_jyz.txt

cat:

textfromjyz:

Nosuchfileordirectory

echo"

svnaddwebsvn-test/private/mbb/from_jyz.txt

Awebsvn-test/private/mbb/from_jyz.txt

svnciwebsvn-test/private/mbb/from_jyz.txt-m"

Addfileinrwdirectorybyjyz"

Addingwebsvn-test/private/mbb/from_jyz.txt

Transmittingfiledata.

Committedrevision7.

▪对/private/rpp具有只读权限的jzy,不能写入该目录。

websvn-test/private/rpp/from_jyz.log

svnciwebsvn-test/private/rpp/from_jyz.txt-m"

Addfileinread-onlydirectorybyjyz"

svnaddwebsvn-test/private/rpp/from_jyz.log

Awebsvn-test/private/rpp/from_jyz.log

svnciwebsvn-test/private/rpp/from_jyz.log-m"

Addingwebsvn-test/private/rpp/from_jyz.log

Commitfailed(detailsfollow):

Serversentunexpectedreturnvalue(403Forbidden)inresponsetoCHECKOUTrequestfor'

/repos/test/!

svn/ver/3/private/rpp'

改进配置

▪在授权配置文件中,以组的为单位进行授权,增加灵活性及可读性。

(注:

mq为新增用户)

g_rpp=ian

g_mbb=jyz,mq

g_wtt=xfy

g_uii=xfy

g_all=ian,xfy,jyz,mq

@g_rpp=rw

@g_mbb=r

@g_wtt=r

@g_rpp=r

@g_mbb=rw

@g_wtt=rw

@g_uii=rw

▪回归测试。

通过。

绑定用户IP

绑定规则

▪用户ian不受限

▪用户jzy、mq各允许从2个IP地址访问

▪用户xyf只允许1个

该规则记录于文本文件/srv/svn/user_access/test_useripfile。

ian:

0.0.0.0

jyz:

192.168.10.23192.168.10.61

xfy:

192.168.10.61

mq:

192.168.10.61192.168.10.122

文件属性如下:

pub-laptop-ian:

/srv/svn/user_access#lltest_useripfile

-rw-r-----1rootwww622011-01-2418:

53test_useripfile

加入IP授权功能

▪创建Perl脚本,在其中指定/srv/svn/user_access为搜索Perl模块的目录。

文件内容及属性如下:

/srv/svn/user_access#catstartup.pl

uselibqw(/srv/svn/user_access);

1;

/srv/svn/user_access#llstartup.pl

-rw-r-----1rootwww372011-01-2112:

52startup.pl

▪创建Perl模块IpAuth,完成IP授权功能。

/srv/svn/user_access#catIpAuth.pm

packageIpAuth;

usestrict;

usewarnings;

#forlogging

useApache2:

Log;

Const-compile=>

qw(OK 

log);

ServerUtil;

useAPR:

qw(:

errorSUCCESS);

Access();

RequestUtil();

Connection();

RequestRec();

qw(OKHTTP_UNAUTHORIZED);

my$userip_file_name="

/srv/svn/user_access/test_useripfile"

;

subhandler{

my$r=shift;

my$remote_ip=$r->

connection->

remote_ip();

my($res,$sent_pw)=$r->

get_basic_auth_pw;

return$resif$res 

!

=Apache2:

Const:

OK;

my$user=$r->

user;

#$r->

warn("

User:

$userfrom$remote_ip"

);

open(my$userip_file,"

"

$userip_file_name)or$r->

Failedtoopen$userip_file_name"

while(<

$userip_file>

){

chomp;

my@words=split(/:

/,$_);

if($words[0]ne$user){

next;

}

my@ips=split(//,$words[1]);

foreach(@ips){

if($_eq$remote_ipor$_eq"

0.0.0.0"

#$r->

Authenokfor$user:

ValidIP=$remote_ip"

returnApache2:

}

}

$r->

Authenfailedfor$user:

InvalidIP=$remote_ip"

returnApache2:

HTTP_UNAUTHORIZED;

}

1;

/srv/svn/user_access#llIpAuth.pm

-rw-r-----1rootwww11792011-01-2419:

35IpAuth.pm

▪在http.conf中,启用IP授权功能。

PerlRequire/srv/svn/user_access/startup.pl

PerlAuthenHandlerIpAuth

▪对/share拥有读写权限的xyf,不能由非法的IP地址进行读操作。

ian@tcn-server:

svnco--usernamexfyhttp:

xfy'

svn

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1