有没有办法阻止用户进行'cvs init'?
'cvs init'创建一个新的存储库。该文档说它是对现有存储库的安全操作,因为它不会覆盖任何文件。但问题是,CVSROOT中的管理文件将被更改。
例如,我们有一个CVSROOT / loginfo脚本,它将提交信息邮寄给邮件组。在该repo上执行cvs init之后,它将被“干净”版本替换。
我们在作为独立服务器运行的linux机器上使用cvs 1.12.13,并使用pserver协议主要从windows连接。
在CVSROOT中设置权限没有帮助,因为cvsd守护程序以root身份运行。 (它需要合并到执行用户)。
问题是,一些不熟悉cvs的用户尝试'cvs init'而不是'cvs import'来创建一个新模块。
答案 0 :(得分:0)
我假设你对机器有sysadmin权限。您可以提供真正的CVS二进制文件的包装器,以防止某些命令运行并以这样的方式存储此包装器,使其在真正的CVS之前被拾取。这有点像黑客,但在紧要关头,它会起作用:
#!/bin/bash REAL_CVS=/usr/bin/cvs case $1 in init) echo "The use of $1 is restricted. Contact your CVS administrator" exit 1 esac $REAL_CVS $*`
另一个选项是重新编译CVS客户端以禁用init命令。看看:
http://cvs.savannah.gnu.org/viewvc/cvs/ccvs/src/client.c?revision=1.483&view=markup
修改此功能以打印出来的东西是微不足道的。
void send_init_command (void) { /* This is here because we need the current_parsed_root->directory variable. */ send_to_server ("init ", 0); send_to_server (current_parsed_root->directory, 0); send_to_server ("\012", 0); }