在bsd 下使用 cvsd 创建安全的 cvs 服务器
本文除基本软件安装外,其它部分也适用于linux或其它unix 系统。
1. 下载及安装
cvsd
http://tiefighter.et.tudelft.nl/~arthur/cvsd/
cvs
http://www.cvshome.org
或者
直接使用ports 安装cvsd,位于 /usr/ports/devel/cvsd
直接使用ports 安装cvs,位于 /usr/ports/devel/cvs+ipv6
创建 cvsd 用户。
2. 修改配置
指定虚拟根目录的实际路径,在RootJail命令后设置
/usr/local/etc/cvsd/cvsd.conf
# RootJail <path>
# This is the location of the chroot jail
# cvs should be run in.
# Specify 'none' (without quotes) to not use
# a chroot jail.
# This directory should be initialized with
# the cvsd-buildroot script.
RootJail /home/soft/cvsd
创建 /home/soft/cvsd,
使用命令行 /usr/local/sbin/cvsd-buildroot /home/soft/cvsd/ 初始化虚根目录
创建cvsroot 目录 : mkdir /home/soft/cvsd/cvsroot
用命令 cvs -d /home/soft/cvsd/cvsroot init 初始化cvs目录
用命令建立cvs用户:
cvsd-passwd /home/soft/cvsd/cvsroot/ +cvsuser:cvsd
上面的命令建立cvsuer 这个帐号,它和系统的 cvsd用户挂接。注意,cvsd是操作系统的用户名,是第一步操作中建立的。
你还可以使用该命令建立其它帐号.
将cvsroot 加入/usr/local/etc/cvsd/cvsd.conf的最后一行,如下面
Repos /cvsroot
此句指明要使用虚拟根下的 "cvsroot" 这个仓库。
3 设置启动脚本
修改/usr/local/etc/rc.d/cvsd.sh.sample 为 /usr/local/etc/rc.d/cvsd.sh
设置执行属性: chmod +x /usr/local/etc/rc.d/cvsd.sh
4.注意事项
cvsd只是cvs的一个外壳程序,将cvs运行在虚拟根环境下,提高系统的安全性。你在安装cvsd后还必须安装cvs程序。
不要跨分区建立仓库,否则会提示找不到用户.
我的/home 和/ 是两个不同的分区.我开始在home下创建仓库,在var下创建虚根目录,作了符号链接后不能读取文件.
声明:
转载此文请保留此声明信息。
驱动开发网 华语地区核心层开发专业网站 http://www.driverdevelop.com
软件创造价值,驱动提供力量!
醉春风 回复于:2004-06-27 08:22:56 |
[quote:b5235e4f3a="znsoft"]不要跨分区建立仓库,否则会提示找不到用户. 我的/home 和/ 是两个不同的分区.我开始在home下创建仓库,在var下创建虚根目录,作了符号链接后不能读取文件. [/quote:b5235e4f3a] 这个用mount_nullfs /home/xxx/xxx /var/lib/cvsd/xxx 就行了... ... |
znsoft 回复于:2004-06-28 17:10:03 |
谢谢。 |
醉春风 回复于:2004-06-28 18:09:01 |
不谢,写得挺好。。。 |
zliming 回复于:2004-06-28 22:45:30 |
CVSNT可以用NTFS控制好一些 *NIX下面有人用SCM LDAP+CVS不过都不是很理想,请教有没有人重写过的CVS,可以用小型数据库保存用户和权限的版本? |
醉春风 回复于:2004-06-28 23:58:01 |
[quote:3903214d5e="zliming"]CVSNT可以用NTFS控制好一些 *NIX下面有人用SCM LDAP+CVS不过都不是很理想,请教有没有人重写过的CVS,可以用小型数据库保存用户和权限的版本?[/quote:3903214d5e] 好像不用这么复杂的,去看看[url=http://www.freebsd.org/doc/en_US.ISO8859-1/articles/cvs-freebsd/]Setting up a CVS repository - the FreeBSD way[/url]就能有简单的用户权限 还有commit mail和自己定义的tag... ... |
quakelee 回复于:2004-06-29 13:15:14 |
我还以为是cvsd over ssh呢………… |
zliming 回复于:2004-06-29 13:38:28 |
[quote:25f60fa1d2="醉春风"]苡屑虻サ挠没ㄏ?还有commit mail和自己定义的tag... ...[/quote:25f60fa1d2]
我的权限要分的很细的,一个目录下面和这个目录下的目录权限组要不同.现在是passwd里面映射到系统用户控制权限的.但一个用户最多只有在17个组,对我们的要求还不能很好实现,要分的太细了. :em06: |
zliming 回复于:2004-06-29 13:41:15 |
[quote:a61e609806="quakelee"]我还以为是cvsd over ssh呢…………[/quote:a61e609806]
用SSH(ext)因为我们在内网的不是很重视安全,并面SSH对服务器性能要求要高一些,系统用户多了不太好管理. |
yanyp 回复于:2004-06-29 14:17:35 |
这两天刚配好cvs服务器,
不过是redhat9.0+cvs,client端是windows+wincvs,cvs的功能真是强大哦 |
zliming 回复于:2004-06-29 14:20:33 |
[quote:42cc185808="yanyp"]这两天刚配好cvs服务器,
不过是redhat9.0+cvs,client端是windows+wincvs,cvs的功能真是强大哦[/quote:42cc185808] wincvs感觉有一些BUG,建议用 TortoiseCVS. :em09: 很好用的 |
醉春风 回复于:2004-06-29 15:08:00 |
[quote:3d4dbca155="zliming"] 我的权限要分的很细的,一个目录下面和这个目录下的目录权限组要不同.现在是passwd里面映射到系统用户控制权限的.但一个用户最多只有在17个组,对我们的要求还不能很好实现,要分的太细了. :em06:[/quote:3d4dbca155] 偶是在avail里面划分的,看看上面提到的那个cvs_acls.pl [code:1:3d4dbca155] # Example: (Text from the ';;' rightward may not appear in the file.) # # unavail ;; Make whole repository unavailable. # avail|dgg ;; Except for user "dgg". # avail|fred, john|bin/ls ;; Except when "fred" or "john" commit to # ;; the module whose repository is "bin/ls" [/code:1:3d4dbca155] |
醉春风 回复于:2004-06-29 15:11:11 |
[quote:85952775be="quakelee"]我还以为是cvsd over ssh呢…………[/quote:85952775be] 老大有什么好注意,偶跑了一个jail, 所有的系统用户都是jaill里面的。。。 .。。 |
dennis2 回复于:2004-06-29 16:09:14 |
[quote:ad0d95b35b="zliming"]
我的权限要分的很细的,一个目录下面和这个目录下的目录权限组要不同.现在是passwd里面映射到系统用户控制权限的.但一个用户最多只有在17个组,对我们的要求还不能很好实现,要分的太细了. :em06:[/quote:ad0d95b35b] 那还是用 subversion 吧,权限可以分得很细。 |
zliming 回复于:2004-07-02 02:28:13 |
[quote:4e15b5cfd8="dennis2"]
那还是用 subversion 吧,权限可以分得很细。[/quote:4e15b5cfd8] 这个刚出来的,我试一段时间看看。不敢正版使用。 是在说的perl脚本,看了一下好像比passwd好不了多少的。只要对应到系统用户的.控制系统用户权限感受不能细分. |
黑夜编码人 回复于:2004-07-02 10:15:18 |
写得很不错,是否愿意发布到《[url=http://www.cnfug.org/journal]CNFUG期刊[/url]》中呢?
《CNFUG期刊》请见:[url]http://www.cnfug.org/journal[/url] |
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/