分类: LINUX
2010-01-21 00:48:03
重启apache
# ./usr/local/apache2/bin/apachectl restart |
权限管理
1)增加用户
# htpasswd [-c] /home/svnroot/repository/authfile wooin //第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加 # htpasswd authfile 用户名(加入新的用户) |
2)权限分配
# vi /home/svnroot/repository/authz.conf [test:/] //这表示,仓库test的根目录下的访问权限 wooin = rw //test仓库wooin用户具有读和写权限 bao = r //test仓库bao用户具有读权限 [test2:/] //test2仓库根目录下的访问权限 wooin = r //wooin用户在test2仓库根目录下只有读权限 bao = //bao用户在 test2仓库根目录下无任何权限 [/] //这个表示在所有仓库的根目录下 * = r //这个表示对所有的用户都具有读权限 #[groups] //这个表示群组设置 #svn1-developers = wooin, bao //这个表示某群组里的成员 #svn2-developers = wooin #[svn1:/] #@svn1-developers = rw //如果在前面加上@符号,则表示这是个群组权限设置 |
将这个设置完成后。重启Apache,就可以通过
svn/test
这个URL来访问仓库了,当然,受权限的限制,必须是合法用户才能访问且具有相应的权限
error info:
Could not open the requested SVN filesystem
* Make sure SVNParentPath correct.
客户端无法提交文件
Can't open file "/opt/subversion/AT2/db/txn-current-lock" Permission denied
增加权限:chmod -R o+rw /opt/subversion/
常见错误:
1、svn: Not authorized to open root of edit operation
Subversion 有个小 bug ,当"anon-access=read"并且某个目录有被设置上"* ="标记,则会出现上述问题。实测中没有设"*="这种访问方式,用户名、密码、目录访问都正确设置也有同样的问题。当把 anon-access=read 改成 anon-access=none ,可以正常访问。1,创建版本库
创建目录结构
mkdir -p /etc/svn/repos
repo 是SVN的根文件(/)
2.运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb
$ svnadmin create --fs-type fsfs /etc/svn/repos
1,第一步要给svn的源目录修改权限
chmod -R 0777 /etc/svn/repos/
chown -R apache:apache /etc/svn/repos/
apache 是http的启动用户
如果不修改会在web访问的时候出现:
Can't open file '/data/svn/develop/db/txn-current-lock': Permission denied
2,查看apache支持的模块是否指定vim /etc/httpd/conf/httpd.conf
添加
需要添加Location并且查看相应的模块
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
并添加相应的apache配置
DAV svn
SVNPath /etc/svn/repos
保存配置文件并启动apache
启动前先测试配置文件的有效性:
无错误启动apache
在http.conf里添加功能authz的功能,确定已经加载authz模块
DAV svn
SVNPath /etc/svn/repos
AuthType Basic
AuthName "svn repos"
AuthUserFile /etc/svn/passwordfile
AuthzSVNAccessFile /etc/svn/accesspolicy
Satisfy Any
Require valid-user
Order Deny,Allow
Deny from all
AuthzSVNAccessFile 指向的是 authz 的策略文件,详细的权限控制可以在这个策略文件中指定,如:
在做策略的同时要给加入用户通过
htpasswd -c /etc/svn/passwordfile gp
来创建用户,以下为用户权限的控制
#三个分组:com,dev,admin
[groups]
com = wocao
dev = nima
admin = username
#在根目录下指定只有admin组用户有读权限
[/]
@admin = rw
[/project_online]
@admin= rw
@com = rw
[/project_test]
@admin = rw
@dev = rw
效果
wocao属于com组不能checkout根和project_test目录
只能checkout 所属的project_online目录
nima属于dev组不能checkout根和project_online目录
只能checkout 所属的project_test目录
Username属于admin能对所有目录进行checkout和commit
如果出现错误“httpd: apr_sockaddr_info_get() failed for svn”
這個問題應該是沒有在 /etc/httpd/conf/httpd.conf 中設定 ServerName 所以它會用主機上的名稱來取代,首先會去找 /etc/hosts 中有沒有主機的定義,修改/etc/hosts中的主机名就可以解决