只读存储仓的访问

使用口令验证服务器授予用户以只读存储源码库的访问(权限)是可能的[通过密码认证直接连接]。(其他访问方式对只读用户没有显示支持,因为这些方法都假定(用户)必须登录进入存储源码库的机器,并且因而用户只能做在局部文件许可权限范围内的任何事情)。

一个以只读身份进入的用户只能做不改变存储源码库的CVS操作,除了某些特定的“管理(administrative)”文件(例如加锁文件和历史文件)。结合用户别名使用这个特征是相当令人满意的[在服务器端设置密码认证]。

不象CVS的早先版本,只读用户只能读取存储源码库,而不能在服务器上执行程序或另外获得难以预料的访问级别。准确一点说,已知的漏洞已经被堵上了。由于这些是新特征,没有做过一个全面的安全检查,你应该使用被许可使用的安全级别。

为一位用户指定只读访问(权限),这里有两种方式:依靠“包含”和依靠“排除”。

“包含”意思是在文件$CVSROOT/CVSROOT/readers内列出特定的使用者的名字。这个文件是一个以简单换行符分隔的用户列表。这里有一个简单的readers文件:

melissa
splotnik
jrandom

(不要忘记在最后一个使用者之后的换行符。)

“排除”意指显示列出有写入访问权限的每一位用户。如果文件

$CVSROOT/CVSROOT/writers

存在,那么只有列入该文件内的用户有写入权限,而没有列入其内的其他人只有读取权限(当然,即使只读权限的用户仍需被列在CVS passwd文件之内)。writers文件与readers文件有相同的格式。

注意:如果你的CVS passwd文件将CVS用户映射到系统用户[在服务器端设置密码认证],你要确信拒绝或允许使用cvs用户名而不是系统用户名来进行只读访问。也就是说,readerswriters文件包含有CVS用户名,这些用户名可以与系统用户名一致或不一致。

这里有一个关于服务器在决定是否允许只读或只写访问行为的完整描述。

如果readers文件存在,并且这个用户名被列在内,那么她会获得只读访问权限。如果writers存在,并且用户没有被列入其中,那么她也只能获得只读访问权限(这是正确的,即使readers存在但用户没有被加入其中)。否则,她将获取完全读写访问权限。

当然,如果两个文件同时记录了同一个用户,这样会发生冲突。这种情况可以通过较为保守的方式解决。此用户会获得只读访问权限。这样做会更有利于保护存储仓。