在OpenSUSE上搭建基于Web的SVN服务器Word下载.docx
- 文档编号:16443347
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:14
- 大小:19.29KB
在OpenSUSE上搭建基于Web的SVN服务器Word下载.docx
《在OpenSUSE上搭建基于Web的SVN服务器Word下载.docx》由会员分享,可在线阅读,更多相关《在OpenSUSE上搭建基于Web的SVN服务器Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
集成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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OpenSUSE 搭建 基于 Web SVN 服务器