三、配置 SVN 服务器
如果你对我们如何配置 SVN 的服务器,以及它的权限管理如何设置感兴趣,
欢迎你阅读下面的部分,这里仅仅对第一节当中阐述的 svn+ssh,且使用密钥
对认证的方式进行说明。希望我们以后有更多的同学可以承担服务器的维护工
作。这里我们假设你已经比较熟悉 Linux 上的一些基本操作,否则的话请去补
习一下 ^_^
1、创建独立的 svn 版本库属主,也就是前面提到过的 svnowner。我们希望
svnowner 自己是一个独立的用户,同时也独立成组,这样可以避免不必要的
外人干扰。以下的操作除非特别说明,均使用 svnowner 用户进行操作。
2、以 svnowner 用户的身份创建版本库。首先使用 umask 027 的方式设置
掩码值,使得之后创建的文件和目录对本组用户只有读权限,组外用户无权限。
如果考虑更严格的权限控制,可以使用 umask 077 方式,仅允许 svnowner
用户自己访问,拒绝本组、组外用户的任何访问。接着用 svnadmin create
path_for_repository 在 path_for_repository 路径上创建版本库。从便利和
权限一致性的角度,建议把 svn、svnserve、svnadmin、svnlook 等 svn 工
具改名为 real_svnxxx,再创建 svn 等脚本程序,例如 svn 脚本可以这样编写:
#!/bin/bash
umask 027
/usr/bin/real_svn “$@”
3、创建 SSH 公钥存放文件。在 svnowner 用户目录下创建.ssh 目录,并在其
下创建 authorized_keys 文件,目录和文件的都应当仅仅是本用户可读写的。
将各用户发送给你的公钥添加到 authorized_keys 文件当中,注意:一行一个
公钥,并在公钥前增加 option 字段,例如:
command="/home/svnowner/svnserve -t -r path_for_repository –tunnel-user=
svnuser1", no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty
ssh-rsa .......(RSA Key here)....user1
上例当中,用户 user1 使用该密钥对认证之后将会执行/home/svnowner
下的 svnserve,显然这应当是一个包含设置 umask 的脚本,并且以
path_for_repository 作为版本库的根,svnserve 运行于 tunnel 模式下,使
用的 svn 用户名是 svnuser1。再次提醒大家的是以上内容需要在
authorized_keys 里面一行内写完。
4、现在可以在版本库里面设置具体的 svnuser 的权限了。进入之前所创建的
path_for_repository 目录,在其中有 conf 目录,是负责配置版本库的设置的。
找到 svnserve.conf 文件,在其中去掉注释并修改的行有:
anon-access = none
auth-access = write
authz-db = authz
realm = XXX Group Repository
评论0