Windows下CVS服务器权限配置总结

环境:CVS安装在一台非域控的服务器上,需要让所有客户端使用域用户来登录使用CVS。

服务端需要用到2.0+才支持域用户登录,我们使用的是cvsnt-2.5.03.2382.msi,在配置服务器时Sever Settings里Default设成当前域名。

Repository configuration里添加CVS仓库:Name–/ROOT,Root–D:/CVS/ROOT,即D:\CVS\ROOT是新建的CVS仓库,映射的仓库名是ROOT。

客户端使用wincvs_setup.exe,安装时分开安装。客户端使用pserver模式连接,可以添加一个CVSROOT的环境变量:
[text]set CVSROOT=:pserver:domain_user@192.168.1.15:/root[/text]
//Windows域用户登录方式使用sspi替换pserver更安全,同时也解决了部分用户无法登录的问题

这里假设ROOT所在服务器IP是192.168.1.15,最后的/root即CVS新建的仓库名,如果不添加CVSROOT环境变量则需要每次使用时都需要选择,格式也是前面的CVSROOT。

权限配置总结:
1. D:\CVS\ROOT目录授予Domain Users“读取和运行权限”,所有子目录继承这个权限,授予Administrators组所有权限。

2. 考虑到局域网安全问题,不要共享D:\CVS\ROOT或D:\CVS目录。

3. 在服务器上也安装wincvs_setup.exe,使用管理员用户登录(管理员要有D:\CVS\ROOT的完全权限),方便授权。Checkout出CVSROOT目录,只给管理员有修改权限(假设管理员为cvs_admin,是Administrators组用户):
[text]
cvs chown -R cvs_admin CVSROOT // 授予cvs_admin所有者权限
cvs chacl -R -u cvs_admin -a all CVSROOT // 授予cvs_admin所有权限
cvs chacl -R -a none CVSROOT //设置default为无权限
[/text]

4. 添加新的项目TEST并授予domain_user用户所有权限步骤:

4.1 在服务器上修改cvs_admin管理员本地目录(比如D:\CVSClient)下CVSROOT/modules文件,在里面添加一行TEST TEST,中间用Tab或空格分隔,然后提交。

4.2 在cvs_admin管理员本地目录下新建一个TEST目录(根CVSROOT在同一级目录),目录下添加一个Readme.txt文本文件,添加这个项目的一些简单说明等内容。

4.3 右击TEST目录使用Import module菜单导入TEST项目,会生成D:\CVS\ROOT\TEST目录,给该目录授予domain_user用户读写权限,删除cvs_admin管理员本地目录下TEST目录,重新checkout出来。

4.4 修改TEST目录的权限(如果在wincvs中选中TEST目录为当前目录可以省略TEST的输入):
[text]
cvs chown -R domain_user TEST // 修改owner为domain_user
cvs chacl -R -u domain_user -a all TEST // 修改domain_user为所有权限
cvs chacl -R -a none TEST // 修改default用户为无权限,包括cvs_admin也没有权限
[/text]

5. domain_user使用wincvs登录192.168.1.15,Checkout出TEST模块,通过chacl等命令授予给其他人。

如果需要增加domain_user2对TEST的修改权限,需要完成两步操作:

1. 通过cvs管理员cvs_admin授予domain_user2对D:\CVS\ROOT\TEST目录的读写权限

2. 由TEST项目的Owner domain_users授予domain_user2对TEST项目的读写权限:
[text]cvs chacl -R -u domain_user2 -a read,write,create TEST [/text]

如果出现domain_user离开无法再授权的情况,可以通过批量文件替换文件UltraEdit32等工具把D:\CVS\ROOT\TEST目录下所有fileattr.xml中的domain_user替换成新的Owner或管理员cvs_admin。

总结:

1. CVS仓库目录D:\CVS\ROOT及根目录D:\CVS要授予访问者读或写权限。

2. 要在cvs客户端里通过chacl命令给访问者授予读或写的权限。

3. 以上两个权限的交集才是访问者最终的权限,缺一不可。

PS. 使用域用户登录总是出有的人可以登录有的人不能登录的情况,然后多次实现后发现使用Windows 授权协议sspi才解决了这个问题,从cvs的帮助文档来看,推荐的正是sspi方式,因为这种模式下密码是加密的。

Tags:

Leave a Reply