下一个: , 上一个: Repository files, 上层: Repository storage


2.2.2 文件权限

所有的 `,v' 文件全部被设置成只读,并且,你不能改变那些文件的权限。 在仓库里的目录对于在每个目录里都有修改文件权限的人来说才是可写的。 这通常意味着你必须建立由一个能在项目里编辑文件的人组成的 unix 组(参见 group(5)),并且设置仓库以便确保确实是这个组拥有这一目录。 (在有些系统上,你还需设置仓库的 set-group-ID-on-execution 标识位(参见 chmod(1)) 这样才能使新建的文件和目录正确得到父目录的 group-ID 而不是当前进程的。)

这也意味着你仅能控制每个目录下文件的访问。

注意,那些用户必须也有写访问来检出文件,因为 cvs 需要建立锁定文件(lock file)(参阅 Concurrency)。 对于一些只读访问的目录,你也可以利用 CVSROOT/config 的 LockDir 来将锁定文件放到仓库以外的地方(参阅 config)。

还要注意,用户必须有 CVSROOT/val-tags 文件的写访问权限。 cvs 用它来纪录标签的标记名是有效的(有时当标签被使用,以及被创建时就被更新)。

每个 rcs 文件将被最后一个提交它的人拥有。 其实这并不重要,它的实质在于谁拥有这目录。

cvs 试图为每一个添加在这个目录树里的新目录设置合理的文件权限,但是当你需要一个新目录与它的父目录有不同的权限的时候,必须手动设置它。 假如你设置那些在仓库里由 cvs 建立目录或者(和)文件所使用的控制文件权限的 CVSUMASK 环境变量。 CVSUMASK 不影响在工作目录中的文件权限;这样的文件有此种权限,典型地对于新近创建的文件,除有时候 cvs 以只读创建它们之外(见表个各节,Setting a watch; -r,Global options;或 CVSREADEnvironment variables)。

注意,使用客户机/服务器的 cvs(参阅 Remote repositories),没有好的方法来设置 CVSUMASK;在客户机上的设置是无效的。 如果你正与 rsh 连接着,那正如你的操作系统文档中说明的那样,你可以把 CVSUMASK 设置在 .bashrc.cshrc 里。 这个操作也许会在 cvs 将来的版本里发生变化,不要依靠在客户机上的没有效果的 CVSUMASK 设置。

使用 pserver,在 cvsroot 目录,以及在这个目录树里那些目录上,你通常需要更加严格的设置权限;见 Password authentication security

有些操作系统具有这种特性:允许让某一特定程序运行时完成程序访问者不能完成的任务。 比如,unix 中的设置用户 id(setuid)或设置组 id(setgid)特性,或者 VMS 的安装映像特性。 cvs 就不是为使用这类特性而编写的,因此,试图以这种方式安装 cvsCVS 将只能提供针对偶然性失误的保护;任何想要获得这一方法的人都可以轻易做到,而且,根据你设置的不同,还可以获得比 cvs 更多的东西。 或者,你也许希望考虑 pserver。 就可能提供虚假的安全感或者打开一个比你试图要弥补的安全漏洞更大的漏洞方面而言,它也具有相同的特性,因此,如果你考虑这一选项的话,一定要仔细阅读有关 pserver 安全方面的文档(Password authentication security)。