老板提出一个要求:有一些文件只能被他和会计存取,研究了几天,终于解决了,
也算是个小成果,给大家共享一下。网上的材料不是很全,东一点,西一点,
再加上自己的理解就可以了。
1. 改变CVSNT用户管理方式;
缺省是跟windowns2003系统一样的,这样服务器端就要建立跟CVSNT客户端
的用户和密码一样的用户。比较无聊。
方法是在CVSROOT/config文件里把SystemAuth=yes改成SystemAuth=no,
不过这里有个陷阱,把config checkin以后原来的用户都没用了,
2 所以要在改这个文件之前在CVSROOT下先手工建一个passwd文件来存取用户
信息,所以你如果跟我一样,不小心一开始就做了第一步,麻烦再改回去,
做第2步;
3 用 'cvs passwd -r 'real user' -a 'cvs user' 命令重新建立所有用户,'real user'
是系统用户名,'cvs user'是cvs管理的用户名,可以为不同的cvs user配同一个
real user. 这里也有一个小陷阱:尽量不要改用户名,否则人家已经checkout
出来的东西就要全部再checkout 一次,比较麻烦,如果发现用户名不一样,
没关系,再用cvs passwd建一个用户好了。如此一来,CVS用户跟客户端的
登录用户的密码就可以不一样了。增加安全性。
4. 建立一个目录放敏感的文件sensitive_dir;
5. 把敏感文件加到repository里去;
6. 用acl(Access Control List)命令改sensitive_dir/fileattr.xml内容来改变该目录的
权限控制。
缺省所有用户没有任何权限
cvs chacl -a noread,nowrite,nocontrol,nocreate,notag
把会计的权限加上
cvs chacl -u susan -a read,write,tag,control,create
把老板的权限加上
cvs chacl -u laoban -a read,write,tag,control,create
再说一个陷阱,这些命令是在客户端做的,有时会出现does not support之类的
错误,这个其实是客户端CVSNT和服务器端CVSNT版本不一样导致的。
解决方法很简单:把服务器端的cvs.exe所在的目录的文件全部copy到客户端来,
然后在path里把新的cvs.exe所在目录放在旧版本的目录之前就行了。
7 设置完了以后,用户只要重新在sensitive_dir上一级目录update一下,就可以
把sensitive_dir checkout出来了,而其实用户check out出来则不会出现这个
目录。
大家如果有问题请联系我。
msn: tier4u@hotmail.com
