分享
 
 
 

FreeBSD上两种认证方式配置SVN笔记二

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

之前写过一个关于SVN的笔记,本来不想再弄这个东西,因为项目原因,被逼继续使用SVN进行配置管理。花费了几个小时总算搞清楚了具体细节,整理一份文档出来今后备用。

环境:

FreeBSD 6.2 Released C1

Apache 2.2.3

Subversion 1.4.0

目标:

通过Apache的WebDAV方式访问SVN进行日常开发和代码管理

一、安装:

1、Apache安装

不用多说,进入到 /usr/ports/www/apache22目录下,运行make install即可安装默认方式搞定,如果你还有别的apache的应用和需求,自己研究。

2、Subversion安装

#cd /usr/ports/devel/subversion

#make install WITHOUT_BDB=yes WITH_MOD_DAV_SVN=yes APXS=/usr/local/sbin/apxs

说明:WITHOUT_BDB=yes 这是我不使用BerkleyDB才加上的,你愿意使用可以去掉,WITH_MOD_DAV_SVN=yes APXS=/usr/local/sbin/apxs 两个参数是为了支持Apache的WebDAV方式

到此就安装完了,剩下的就是建库和设置权限

二、建库

假设我创建两个项目(库),分别为test和toplee,一个用于练习和测试,一个用于保存toplee.com的代码

#mkdir /var/SVN (创建svn库存放的根目录,可以随便选择目录)

#svnadmin create /var/SVN/test

#svnadmin create /var/SVN/toplee

搞定

三、设置权限

在达到最终目标前(使用apache的webDav方式访问),先简单说一下通过svn自带的轻量级svnserve的方式搭建环境的方法,如果你不感兴趣,就直接看后面apache的webDav部分吧

1、配置svn自带的svnserve

#vi /etc/rc.conf 加入下面几行

svnserve_enable="NO"

svnserve_user="www"

svnserve_group="www"

svnserve_flags="-d --listen-host=xxx.xxx.xxx.xxx --listen-port=3690"

svnserve_data="/var/SVN"

#/usr/local/etc/rc.d/svnserve start

搞定,此时就可以通过 svn info svn://xxx.xxx.xxx.xxx/test 访问test库了

不过这时使用了默认权限,大家都能访问和修改库里面的东西,需要设置权限

权限设置方法:

在/var/SVN/test下和/var/SVN/toplee下都有个conf目录,进入到conf目录,能看到authz、passwd、svnserve.conf三个文件,这三个文件就是用来配置svnserve方式权限的,分别配置如下:

a) 配置 svnserve.conf

在文件中写入类似下面的内容

[general]

anon-access = none

auth-access = write

password-db = passwd

大概意思是,不允许匿名访问,全部需要使用密码验证,对于通过验证的用户,给与write权限,同时用于密码验证的文件是passwd文件

b) 配置passwd文件

这个文件打开后,一看就明白,就是写用户名和口令,不爽的是密码是明文的,哪怕加个md5也好。写入类似这样的东西

michael=toplee

test=testdb

lee=abc

设置了三个用户,分别是michael、test、lee

c)配置authz文件

这个文件用于配置用户访问库中文件或者目录的具体策略,基本上默认文件里面就有说明和范例了,我的authz文件大概如下:

[groups]

g_w = michael,lee #意思是创建一个组,包含两个用户

g_r = test #第二个组,包含一个用户

[/abc] #目录名

@g_w= rw #g_w组的用户都能read和write

@g_r=rw #g_r组的用户也能read和write

[/xyz]

michael=rw

lee=r

@g_r=r

上面的内容大概根据内容就能看懂意思,不多解释

至此,配置完成,运行/usr/local/etc/rc.d/svnserve restart重启服务即可生效,现在使用 svn info svn://xxx.xxx.xxx.xxx/test 则需要你进行身份验证了。

2、配置基于Apache的WebDAV方式访问SVN

这是我今天的最后目标,有一些类似的文档可以找到,不过总感觉要少点什么。

关键的两个地方,配置httpd.conf和svn的权限文件

a)配置httpd.conf

在httpd.conf文件里面加入下面一堆东西

LoadModule dav_module libexec/apache22/mod_dav.so

LoadModule dav_fs_module libexec/apache22/mod_dav_fs.so

LoadModule dav_svn_module libexec/apache22/mod_dav_svn.so

LoadModule authz_svn_module libexec/apache22/mod_authz_svn.so

<Location /svn>

DAV svn

SVNParentPath /var/SVN

AuthType Basic

AuthName "Subversion in toplee.com"

AuthUserFile /var/SVN/.svnpasswd

AuthzSVNAccessFile /var/SVN/.svnaccess

Satisfy Any

Require valid-user

</Location>

啥意思呢?

其实最前面两行,apache安装好后基本上默认就有了,不用管,但是你要确定一下是不是真的有了,没有的话不行,检查/usr/local/libexe/apache22/下是否有相应so或者重新编译安装apache,并且激活相应的选项。

第三四行是安装svn时增加 WITH_MOD_DAV_SVN=yes APXS=/usr/local/sbin/apxs 这两个参数时也会自己默认加上的,如果没有就自己手动加上。

后面那一堆的部分是关键,大概意思就是调用.svnpasswd文件进行用户验证,调用.svnaccess文件进行权限判断,细节我懒得说了,你照着弄,根据目录不同自己改改就行。

b)配置svn的用户权限文件

这回我们不会继续使用前面svnserve方式下的那三个文件了,而是使用httpd.conf文件里面配置的.svnpasswd和.svnaccess两个文件来配置,当然这两个文件的名字和路径你都可以根据自己喜好修改。

首先是配置.svpasswd文件,这个文件其实就是标准Apache的.htpasswd文件,弄过http方式验证的都知道咋回事。运行下面的命令创建三个用户

#htpasswd -c /var/SVN/.svnpasswd michael

#输入口令

#htpasswd /var/SVN/.svnpasswd lee (注意这里不在需要-c参数,它是用来第一次创建文件用的)

#输入lee用户的口令

#htpasswd /var/SVN/.svnpasswd test

#输入test用户的口令

搞定.svnpasswd文件

接下来开始搞.svnaccess文件, 运行 vi /var/SVN/.svnaccess 编辑文件,加入下面的东西

[groups]

g_w = michael,lee

g_r = test

[test:/]

@g_w= rw

@g_r=rw

[toplee:/blog/]

michael=rw

lee=r

@g_r=r

[toplee:/mail/]

@g_w=rw

@g_r=w

这个文件呢,实际上跟前面 test/conf和toplee/conf下的authz文件格式一样,不过就是不需要为每个库单独创建,而统一使用了一个文件来配置,从文件中可以看 到变化,在配置目录的时候,增加了库的名字,如[toplee:/blog/] 表示toplee库下/blog/目录的意思

最后就是运行 /usr/local/etc/rc.d/apache22 restart 重启apache服务则全部搞定。

在浏览器里面输入 http://xxx.xxx.xxx.xxx/svn/test 或者 http://xxx.xxx.xxx.xxx/svn/toplee 试试,让你输入用户名口令就ok了

如果你没有成功,一个可能是RPWT,另一个可能是中间哪里写错了,比如我就因为手误把 .svnpasswd 弄成 .svnhtpasswd,结果httpd.conf里面又是写的.svnpasswd,弄了半天没有成功,看error.log才明白咋回事。

呵呵,祝你顺利!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有