在进入客户端dos下执行命令操作时:
先要设置cvsroot的环境变量,命令为:
set cvsroot=:pserver:用户名@10.171.20.87:/库名
然后,远程登陆到服务器,命令为:
cvs -d:pserver:用户名@10.171.20.87:/库名 login
1. CVS的目录权限介绍:
系统支持的目录权限列表:
r (读取权限,有了它可以执行update与checkout)
w (写入权限,有了它可以执行Commit)
c (创建和删除权限,有了它可以执行Add)
n (没有任何权限)
只有w权,是不可以创建一个新文件的,因为在客户端创建的新文件必须先Add后再Commit。
同样,只有c权,也是不可以创建一个新文件的,因为第一步的Add都通不过。
有了wc权,就可以创建一个新文件/文件夹了。
◇默认情况下,任何用户都拥有任何目录的所有权限。
◇任何情况下只有目录的拥有者和Administrator才有权力更改目录的使用权限及拥有者。
注意:更改一个目录的拥有者后,改变的只是这个特定文件夹的拥有者,而它里面的子/孙子文件夹的拥有者不会改变,所以,必须一个个的改。
◇目录(即模块)的拥有者为import此模块的用户(用户import一个文件夹时,这个文件夹里必须有文件才行),所以如果一个新模块是由普通用户提交的,管理员最好将它的拥有者改为管理员,命令:
cvs chown 管理员名 模块路径
修改后执行命令查看属主是否真的已经改变了:
cvs lsacl 模块路径
则,以后此模块就只能由管理员来修改它的使用权限了。
注意:
模块路径:指的是此模块在服务端的虚拟路径,一般,库的虚拟路径即为根,则cvsroot的虚拟路径就是:cvsroot;若cvsroot目录下有一个文件夹yvon,则yvon的虚拟路径就是:cvsroot/yvon。一般而言,如果省略了“模块路径”,则默认为是对当前目录的权限进行修改。
记住:每次执行命令修改某个服务端模块的权限,都要进入到客户端对应的这个模块的目录下去修改,否则,就要在命令后加上它的模块路径了。
2. 修改cvsroot的权限:只让管理员拥有rcw三种全部权限
一个库的cvsroot目录是用于存放这个库的配置文件的,它是自动生成的,它里面最好只存放配置文件,所以,向这个库新添加的模块都最好不要放在cvsroot目录下,而是放在库的根目录下,与cvsroot的目录层次并列。但是,在默认情况下,任何用户都拥有对cvsroot的rcw权限,所以,为了以防用户滥改配置文件,在向外公开一个库前,管理员最好先将此库的cvsroot权限设为只允许管理员控制,这样一来,里面的配置文件就安全了。
修改操作如下:
首先进入客户端dos界面的cvsroot目录下。
1.取消所有用户对cvsroot的默认权限:cvs chacl default:n(在执行此步之前,可以先执行命令查看cvsroot当前的访问状态:cvs lsacl)
2.设置管理员拥有所有权限:cvs chacl administrator:rcw
3.更改cvsroot的拥有者:cvs chown administrator
4.查看cvsroot的权限状态:cvs lsacl回车后显示:
Directory:. //意思是:当前目录,即cvsroot目录。
Owner: administrator
default:n //意思是:对所有用户的默认权限现在为:n
administrator:rwc //意思是:对管理员administrator的权限为:rcw
3. 权限命令的详细解释
假设1:服务器端的某个库,名为"yvon",它里面的文件夹有:CVSROOT,yvon1,yvon2。
假设2:客户端从服务端checkout下来的库路径对应在本机为 C:\yvon
命令:cvs chown username yvon1
解释:更改文件夹"yvon1"的属主为"username"。
注意:更改一个目录的拥有者后,改变的只是这个特定文件夹的拥有者,而它里面的子/孙子文件夹的拥有者不会改变,所以,必须一个个的改。
命令:cvs lsacl yvon1
解释:查看模块yvon1的属主
命令:cvs chacl -R username:rw yvon1
解释:‘-R'的意思就是递归设置权限。将用户"username"对文件夹"yvon1"的权限设为可读可写,且yvon1文件夹下面的子文件夹、孙子文件夹的权限都变为了rw。
命令:cvs chacl -R default:n yvon1
解释:将模块yvon1及其子/孙子文件夹的默认权限(即对任何用户)设为不可访问。
命令:cvs chacl username:rwc yvon1
解释:将用户"username"对文件夹"yvon1"的权限设为rwc,yvon1文件夹下面的子文件夹、孙子文件夹的权限不变。
命令:cvs chmod 664 yvon1/ren.txt
解释:chmod命令的语法为:chmod abc file 其中a,b,c各为一个数字,分别表示owner、Group、及Others的权限(r=4,w=2,x=1)。
chacl是对文件夹即目录进行权限设置的,而chmod是可以对文件的权限进行设置的。这句话意思是:将yvon1目录下的文件ren.txt的访问权限对拥有者及同组成员设为可读可写,其他人为只可读。
注意:在客户端的dos下执行这些命令时,必须先回到从服务端checkout下来的库目录下,即必须先回到 C:\yvon下,并且保证你要修改的模块已经checkout下来了,否则,会报错:cvs[chacl aborted]:there is no version here; do 'cvs checkout' first。
4. 别名&赋权
假设:
本机的Local用户有:local_a, local_b, local_c
本机所在局域系统的域用户有:domain_a, domain_b, domain_c
passwd文件中的用户:local_a, domain_a, a, b, c
所以为一个库添加用户时,可采用这种方法:新建多个用户,将他们都对应到同一个本机的local用户上,可用取别名的方法,命令为:
cvs passwd -r local_a -a a;
cvs passwd -r local_a -b b;
cvs passwd -r local_b -c c;
执行后,passwd文件里的用户a,b都对应到passwd文件中的用户“local_a”上了,效果同使用local_a登陆是一样的;而用户c则对应到本机的local用户local_b上了。
同样也可以为域用户取别名,如:cvs passwd -r domain_a -a a, 取了别名后客户端用此别名登陆服务器同用真实的域名登陆效果一样。
取别名时,是只能对应本机用户的,即只可以对应本机local或域用户(根据SystemAuth的值来决定对应local还是域用户)。
虽然用户a,b对应的是同一个本机用户,但是可以对他们设置不同的目录访问权限,这并不冲突。
即使local_a为管理员,a,b也只是普通用户。也就是说a,b只是能借名登陆上去而已。
5. 组赋权
给一个组赋权的命令同给某个用户赋权:
cvs chacl -R 组名:r/w/c/n 模块路径
注意:对于同一个模块,给用户赋的权限 优先级高于 给组赋的权限。
例如:
组名 组成员
group1 ren1 ren2 ren3 ren4...
若对于模块yvon1,赋给组group1的权限为:rwc ; 而给它的成员ren1的权限为:n , 则,ren1对模块yvon1的访问权取“不可访问”,而ren2、ren3、ren4...对yvon1的访问权为“可读可写可创可删”(即赋给group1的权限)。