关于CVS在Window2000下的权限管理

戴尔PowerEdge服务器R450 RAID配置步骤 阅读详情

一.   CVS版本问题

CVS分开客户端和服务器端两个程序,服务器端在Windows平台下用CVSNT,目前这个软件基本稳定,但速度和在Linux/Unix下相比,稍微慢些。但对于熟悉Windows应用程序的人来说,由于其操作简单,不失为一个好的选择。

 

注意:客户端和服务器端两方面的版本统一十分重要。本文挡建议使用:

服务器:CVSNT2.0.34  在www.cvsnt.org下载文件cvsnt-2.0.34.exe

客户端:WinCvs13b17.zip 在sourceforge.net/projects/cvsgui/ 下载WinCvs13b17.zip

检查的方法可以在成功连接后,运行:

cvs version

***** CVS exited normally with code 0 *****

Client: Concurrent Versions System (CVSNT) 2.0.34 (client/server)

Server: Concurrent Versions System (CVSNT) 2.0.34 (client/server)

可见这两个软件的版本十分搭配的。如果版本不一致的时候,会发生客户端的命令服务器解释不了的情况。

或者在服务器端,开始->设置->控制面版打开CVSNT的配置文件,也可以看到服务器端的版本(如下图):

在客户端,在DOS状态下,去到C:/Program Files/GNU/WinCvs 1.3/CVSNT(缺省安装的目录)下输入命令cvs version,可以看到客户端的版本信息(如下图):

另外,由于WinCVS1.3自带了一些方便管理的宏(当然,以后也可以参照这些宏自己开发一些),可以在C:/Program Files/GNU/Wincvs 1.3/Macros看到一堆*.py和*.tcl的文件,这些实际上是Python和Tcl的脚本文件,建议也安装上Python和Tcl的Windows版本,以运行这些脚本或者以后自己扩展参照这些宏写些适合自己的工具。

安装了这两个编译程序后,在WinCVS1.3可以方便切换这两种脚本语言(如下图):

二.   CVS的权限管理

CVS有自己的一套权限管理规则,但只能够去到目录的级别。通过CVS的管理员和目录的所有者可以设置相应目录下的权限。在每个CVS的目录下面(服务器端)可以找到一个.owner和.perms的文件,这两个文件分别记录了目录所有者和相应设置的权限。

值得注意的是,CVS的权限管理是十分简单意义上的管理,只能够去到目录的一级,每个目录下面对应有相应的.owner和.perms文件来具体管理当前目录的权限,如果没有这些文件,权限由上一级的目录继承下来。但它设置的权限只限于CVS内部,最终还是要受系统权限来控制的。例如即使对某个目录明明.owner里面已经记录了某个用户了,但在服务器系统端中限定了这个用户对这个目录的读权限,这个用户仍然不可以checkout到这个目录的。

因此,CVS的权限管理比系统的权限管理弱,可以看作是系统权限管理下的一个适当简单的补充。当不想建立太多的系统用户,而想用适当少的系统用户来影射出比较多的CVS用户的时候,CVS的权限管理才起到应有的作用。这时候需要管理员或者目录所有者对每个目录运行cvs chacl来定义用户的权限。

 

三.   CVS在Window2000下版本控制

由于Window2000的权限管理功能已经十分丰富了,如果在不介意系统用户太多的情况下,建议在Windows平台下(指服务器端)使用CVS还是用回系统用户来设置。

适当地建立组,可以利用Window2000丰富的权限管理,将不同的用户通过组的定义来实现权限的交叉管理。

具体的建议实施方案如下:

1.  在系统中建立一个cvsadmin的用户,属于Administrators组。

以后CVS系统的管理工作都通过这个用户来做。

2.  在CVSNT中增加新的Repository,例如是C:/CVSFiles,然后自动会在C:/CVSFiles下面产生一个CVSROOT的目录。

3.  对CVSFiles进行权限控制,设成只可以Administrators组进行完全控制,将原来的everyone缺省设置去掉(如下图):

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

二.   CVS的权限管理

CVS有自己的一套权限管理规则,但只能够去到目录的级别。通过CVS的管理员和目录的所有者可以设置相应目录下的权限。在每个CVS的目录下面(服务器端)可以找到一个.owner和.perms的文件,这两个文件分别记录了目录所有者和相应设置的权限。

值得注意的是,CVS的权限管理是十分简单意义上的管理,只能够去到目录的一级,每个目录下面对应有相应的.owner和.perms文件来具体管理当前目录的权限,如果没有这些文件,权限由上一级的目录继承下来。但它设置的权限只限于CVS内部,最终还是要受系统权限来控制的。例如即使对某个目录明明.owner里面已经记录了某个用户了,但在服务器系统端中限定了这个用户对这个目录的读权限,这个用户仍然不可以checkout到这个目录的。

因此,CVS的权限管理比系统的权限管理弱,可以看作是系统权限管理下的一个适当简单的补充。当不想建立太多的系统用户,而想用适当少的系统用户来影射出比较多的CVS用户的时候,CVS的权限管理才起到应有的作用。这时候需要管理员或者目录所有者对每个目录运行cvs chacl来定义用户的权限。

 

三.   CVS在Window2000下版本控制

由于Window2000的权限管理功能已经十分丰富了,如果在不介意系统用户太多的情况下,建议在Windows平台下(指服务器端)使用CVS还是用回系统用户来设置。

适当地建立组,可以利用Window2000丰富的权限管理,将不同的用户通过组的定义来实现权限的交叉管理。

具体的建议实施方案如下:

1.  在系统中建立一个cvsadmin的用户,属于Administrators组。

以后CVS系统的管理工作都通过这个用户来做。

2.  在CVSNT中增加新的Repository,例如是C:/CVSFiles,然后自动会在C:/CVSFiles下面产生一个CVSROOT的目录。

3.  对CVSFiles进行权限控制,设成只可以Administrators组进行完全控制,将原来的everyone缺省设置去掉(如下图):

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

另外,由于WinCVS1.3自带了一些方便管理的宏(当然,以后也可以参照这些宏自己开发一些),可以在C:/Program Files/GNU/Wincvs 1.3/Macros看到一堆*.py和*.tcl的文件,这些实际上是Python和Tcl的脚本文件,建议也安装上Python和Tcl的Windows版本,以运行这些脚本或者以后自己扩展参照这些宏写些适合自己的工具。

安装了这两个编译程序后,在WinCVS1.3可以方便切换这两种脚本语言(如下图):

二.   CVS的权限管理

CVS有自己的一套权限管理规则,但只能够去到目录的级别。通过CVS的管理员和目录的所有者可以设置相应目录下的权限。在每个CVS的目录下面(服务器端)可以找到一个.owner和.perms的文件,这两个文件分别记录了目录所有者和相应设置的权限。

值得注意的是,CVS的权限管理是十分简单意义上的管理,只能够去到目录的一级,每个目录下面对应有相应的.owner和.perms文件来具体管理当前目录的权限,如果没有这些文件,权限由上一级的目录继承下来。但它设置的权限只限于CVS内部,最终还是要受系统权限来控制的。例如即使对某个目录明明.owner里面已经记录了某个用户了,但在服务器系统端中限定了这个用户对这个目录的读权限,这个用户仍然不可以checkout到这个目录的。

因此,CVS的权限管理比系统的权限管理弱,可以看作是系统权限管理下的一个适当简单的补充。当不想建立太多的系统用户,而想用适当少的系统用户来影射出比较多的CVS用户的时候,CVS的权限管理才起到应有的作用。这时候需要管理员或者目录所有者对每个目录运行cvs chacl来定义用户的权限。

 

三.   CVS在Window2000下版本控制

由于Window2000的权限管理功能已经十分丰富了,如果在不介意系统用户太多的情况下,建议在Windows平台下(指服务器端)使用CVS还是用回系统用户来设置。

适当地建立组,可以利用Window2000丰富的权限管理,将不同的用户通过组的定义来实现权限的交叉管理。

具体的建议实施方案如下:

1.  在系统中建立一个cvsadmin的用户,属于Administrators组。

以后CVS系统的管理工作都通过这个用户来做。

2.  在CVSNT中增加新的Repository,例如是C:/CVSFiles,然后自动会在C:/CVSFiles下面产生一个CVSROOT的目录。

3.  对CVSFiles进行权限控制,设成只可以Administrators组进行完全控制,将原来的everyone缺省设置去掉(如下图):

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

二.   CVS的权限管理

CVS有自己的一套权限管理规则,但只能够去到目录的级别。通过CVS的管理员和目录的所有者可以设置相应目录下的权限。在每个CVS的目录下面(服务器端)可以找到一个.owner和.perms的文件,这两个文件分别记录了目录所有者和相应设置的权限。

值得注意的是,CVS的权限管理是十分简单意义上的管理,只能够去到目录的一级,每个目录下面对应有相应的.owner和.perms文件来具体管理当前目录的权限,如果没有这些文件,权限由上一级的目录继承下来。但它设置的权限只限于CVS内部,最终还是要受系统权限来控制的。例如即使对某个目录明明.owner里面已经记录了某个用户了,但在服务器系统端中限定了这个用户对这个目录的读权限,这个用户仍然不可以checkout到这个目录的。

因此,CVS的权限管理比系统的权限管理弱,可以看作是系统权限管理下的一个适当简单的补充。当不想建立太多的系统用户,而想用适当少的系统用户来影射出比较多的CVS用户的时候,CVS的权限管理才起到应有的作用。这时候需要管理员或者目录所有者对每个目录运行cvs chacl来定义用户的权限。

 

三.   CVS在Window2000下版本控制

由于Window2000的权限管理功能已经十分丰富了,如果在不介意系统用户太多的情况下,建议在Windows平台下(指服务器端)使用CVS还是用回系统用户来设置。

适当地建立组,可以利用Window2000丰富的权限管理,将不同的用户通过组的定义来实现权限的交叉管理。

具体的建议实施方案如下:

1.  在系统中建立一个cvsadmin的用户,属于Administrators组。

以后CVS系统的管理工作都通过这个用户来做。

2.  在CVSNT中增加新的Repository,例如是C:/CVSFiles,然后自动会在C:/CVSFiles下面产生一个CVSROOT的目录。

3.  对CVSFiles进行权限控制,设成只可以Administrators组进行完全控制,将原来的everyone缺省设置去掉(如下图):

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

在客户端,在DOS状态下,去到C:/Program Files/GNU/WinCvs 1.3/CVSNT(缺省安装的目录)下输入命令cvs version,可以看到客户端的版本信息(如下图):

另外,由于WinCVS1.3自带了一些方便管理的宏(当然,以后也可以参照这些宏自己开发一些),可以在C:/Program Files/GNU/Wincvs 1.3/Macros看到一堆*.py和*.tcl的文件,这些实际上是Python和Tcl的脚本文件,建议也安装上Python和Tcl的Windows版本,以运行这些脚本或者以后自己扩展参照这些宏写些适合自己的工具。

安装了这两个编译程序后,在WinCVS1.3可以方便切换这两种脚本语言(如下图):

二.   CVS的权限管理

CVS有自己的一套权限管理规则,但只能够去到目录的级别。通过CVS的管理员和目录的所有者可以设置相应目录下的权限。在每个CVS的目录下面(服务器端)可以找到一个.owner和.perms的文件,这两个文件分别记录了目录所有者和相应设置的权限。

值得注意的是,CVS的权限管理是十分简单意义上的管理,只能够去到目录的一级,每个目录下面对应有相应的.owner和.perms文件来具体管理当前目录的权限,如果没有这些文件,权限由上一级的目录继承下来。但它设置的权限只限于CVS内部,最终还是要受系统权限来控制的。例如即使对某个目录明明.owner里面已经记录了某个用户了,但在服务器系统端中限定了这个用户对这个目录的读权限,这个用户仍然不可以checkout到这个目录的。

因此,CVS的权限管理比系统的权限管理弱,可以看作是系统权限管理下的一个适当简单的补充。当不想建立太多的系统用户,而想用适当少的系统用户来影射出比较多的CVS用户的时候,CVS的权限管理才起到应有的作用。这时候需要管理员或者目录所有者对每个目录运行cvs chacl来定义用户的权限。

 

三.   CVS在Window2000下版本控制

由于Window2000的权限管理功能已经十分丰富了,如果在不介意系统用户太多的情况下,建议在Windows平台下(指服务器端)使用CVS还是用回系统用户来设置。

适当地建立组,可以利用Window2000丰富的权限管理,将不同的用户通过组的定义来实现权限的交叉管理。

具体的建议实施方案如下:

1.  在系统中建立一个cvsadmin的用户,属于Administrators组。

以后CVS系统的管理工作都通过这个用户来做。

2.  在CVSNT中增加新的Repository,例如是C:/CVSFiles,然后自动会在C:/CVSFiles下面产生一个CVSROOT的目录。

3.  对CVSFiles进行权限控制,设成只可以Administrators组进行完全控制,将原来的everyone缺省设置去掉(如下图):

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

二.   CVS的权限管理

CVS有自己的一套权限管理规则,但只能够去到目录的级别。通过CVS的管理员和目录的所有者可以设置相应目录下的权限。在每个CVS的目录下面(服务器端)可以找到一个.owner和.perms的文件,这两个文件分别记录了目录所有者和相应设置的权限。

值得注意的是,CVS的权限管理是十分简单意义上的管理,只能够去到目录的一级,每个目录下面对应有相应的.owner和.perms文件来具体管理当前目录的权限,如果没有这些文件,权限由上一级的目录继承下来。但它设置的权限只限于CVS内部,最终还是要受系统权限来控制的。例如即使对某个目录明明.owner里面已经记录了某个用户了,但在服务器系统端中限定了这个用户对这个目录的读权限,这个用户仍然不可以checkout到这个目录的。

因此,CVS的权限管理比系统的权限管理弱,可以看作是系统权限管理下的一个适当简单的补充。当不想建立太多的系统用户,而想用适当少的系统用户来影射出比较多的CVS用户的时候,CVS的权限管理才起到应有的作用。这时候需要管理员或者目录所有者对每个目录运行cvs chacl来定义用户的权限。

 

三.   CVS在Window2000下版本控制

由于Window2000的权限管理功能已经十分丰富了,如果在不介意系统用户太多的情况下,建议在Windows平台下(指服务器端)使用CVS还是用回系统用户来设置。

适当地建立组,可以利用Window2000丰富的权限管理,将不同的用户通过组的定义来实现权限的交叉管理。

具体的建议实施方案如下:

1.  在系统中建立一个cvsadmin的用户,属于Administrators组。

以后CVS系统的管理工作都通过这个用户来做。

2.  在CVSNT中增加新的Repository,例如是C:/CVSFiles,然后自动会在C:/CVSFiles下面产生一个CVSROOT的目录。

3.  对CVSFiles进行权限控制,设成只可以Administrators组进行完全控制,将原来的everyone缺省设置去掉(如下图):

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

另外,由于WinCVS1.3自带了一些方便管理的宏(当然,以后也可以参照这些宏自己开发一些),可以在C:/Program Files/GNU/Wincvs 1.3/Macros看到一堆*.py和*.tcl的文件,这些实际上是Python和Tcl的脚本文件,建议也安装上Python和Tcl的Windows版本,以运行这些脚本或者以后自己扩展参照这些宏写些适合自己的工具。

安装了这两个编译程序后,在WinCVS1.3可以方便切换这两种脚本语言(如下图):

二.   CVS的权限管理

CVS有自己的一套权限管理规则,但只能够去到目录的级别。通过CVS的管理员和目录的所有者可以设置相应目录下的权限。在每个CVS的目录下面(服务器端)可以找到一个.owner和.perms的文件,这两个文件分别记录了目录所有者和相应设置的权限。

值得注意的是,CVS的权限管理是十分简单意义上的管理,只能够去到目录的一级,每个目录下面对应有相应的.owner和.perms文件来具体管理当前目录的权限,如果没有这些文件,权限由上一级的目录继承下来。但它设置的权限只限于CVS内部,最终还是要受系统权限来控制的。例如即使对某个目录明明.owner里面已经记录了某个用户了,但在服务器系统端中限定了这个用户对这个目录的读权限,这个用户仍然不可以checkout到这个目录的。

因此,CVS的权限管理比系统的权限管理弱,可以看作是系统权限管理下的一个适当简单的补充。当不想建立太多的系统用户,而想用适当少的系统用户来影射出比较多的CVS用户的时候,CVS的权限管理才起到应有的作用。这时候需要管理员或者目录所有者对每个目录运行cvs chacl来定义用户的权限。

 

三.   CVS在Window2000下版本控制

由于Window2000的权限管理功能已经十分丰富了,如果在不介意系统用户太多的情况下,建议在Windows平台下(指服务器端)使用CVS还是用回系统用户来设置。

适当地建立组,可以利用Window2000丰富的权限管理,将不同的用户通过组的定义来实现权限的交叉管理。

具体的建议实施方案如下:

1.  在系统中建立一个cvsadmin的用户,属于Administrators组。

以后CVS系统的管理工作都通过这个用户来做。

2.  在CVSNT中增加新的Repository,例如是C:/CVSFiles,然后自动会在C:/CVSFiles下面产生一个CVSROOT的目录。

3.  对CVSFiles进行权限控制,设成只可以Administrators组进行完全控制,将原来的everyone缺省设置去掉(如下图):

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

二.   CVS的权限管理

CVS有自己的一套权限管理规则,但只能够去到目录的级别。通过CVS的管理员和目录的所有者可以设置相应目录下的权限。在每个CVS的目录下面(服务器端)可以找到一个.owner和.perms的文件,这两个文件分别记录了目录所有者和相应设置的权限。

值得注意的是,CVS的权限管理是十分简单意义上的管理,只能够去到目录的一级,每个目录下面对应有相应的.owner和.perms文件来具体管理当前目录的权限,如果没有这些文件,权限由上一级的目录继承下来。但它设置的权限只限于CVS内部,最终还是要受系统权限来控制的。例如即使对某个目录明明.owner里面已经记录了某个用户了,但在服务器系统端中限定了这个用户对这个目录的读权限,这个用户仍然不可以checkout到这个目录的。

因此,CVS的权限管理比系统的权限管理弱,可以看作是系统权限管理下的一个适当简单的补充。当不想建立太多的系统用户,而想用适当少的系统用户来影射出比较多的CVS用户的时候,CVS的权限管理才起到应有的作用。这时候需要管理员或者目录所有者对每个目录运行cvs chacl来定义用户的权限。

 

三.   CVS在Window2000下版本控制

由于Window2000的权限管理功能已经十分丰富了,如果在不介意系统用户太多的情况下,建议在Windows平台下(指服务器端)使用CVS还是用回系统用户来设置。

适当地建立组,可以利用Window2000丰富的权限管理,将不同的用户通过组的定义来实现权限的交叉管理。

具体的建议实施方案如下:

1.  在系统中建立一个cvsadmin的用户,属于Administrators组。

以后CVS系统的管理工作都通过这个用户来做。

2.  在CVSNT中增加新的Repository,例如是C:/CVSFiles,然后自动会在C:/CVSFiles下面产生一个CVSROOT的目录。

3.  对CVSFiles进行权限控制,设成只可以Administrators组进行完全控制,将原来的everyone缺省设置去掉(如下图):

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

这样做的好处是由于Window2000缺省权限管理是子目录权限继承于父目录的,如果不将everyone去掉,以后一般用户就比较容易任意添加不是和项目相关的文件进入这个目录了。

4.  在系统中建立一个组和这个项目相关的,例如是Team1。

5.  建立相关的用户,设置成一般用户(users),并归到Team1组。例如user1,user2。

6.  此时看CVSROOT的权限可以看到,由于从父目录继承,它只可以由Administrators组的成员来完全控制。

注意:要将CVSROOT设成对一般用户(这里是将Team1组加入读权限)只读,否则一般CVS用户不可以checkout东西。将CVSROOT下的history文件设成Team1完全控制。

7.  此时user1,user2均可以登录,但是不可以checkout到CVSROOT的内容。

cvs -z9 checkout CVSROOT

***** CVS exited normally with code 1 *****

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

增加内容也不可以:

cvs import -m "test1" Test VENDOR START

***** CVS exited normally with code 1 *****

 

cvs [server aborted]: Cannot access C:/CVSFiles/CVSROOT: Permission denied

因此导入模块的工作还是通过cvsadmin统一来做的。

例如导入了模块test1。

8.  对上面新导入的模块test1,user1和user2还是不可以checkout的,需要利用Window权限管理增加权限给他们。例如他们只可以读出这个模块(如下图):

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

此时user1和user2都可以checkout这个目录,但都不可以修改这个目录。

9.如果针对下面的test2dir附了写的权限给user1(如下图),则user1就可以修改这个子目录了。

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

10.下面这个树状图是这个演示的权限结构图。

/---test1    (team1只读)

    |   test1.txt

    |   test2.txt

    |

    +---TestDir (user2可以修改)

    |       Test11.txt

    |

    /---test2dir (user1可以修改)

test2dir1.txt

数字电路逻辑与设计实验三 译码器和数据选择器 1. 译码器功能测试 将 74LS139 按图 3.1 接线,按表 3.2 输入电平分别置位,填输出状态表。 2. 译码器转换 将双 2-4 线译码器转换为 3-8 线译码器。 (1)画出转换电路图。 (2)在实验箱上接线并验证设计是否正确。 (3)设计并填表写该 3-8 线译码器功能表,画出输入、输出波形。 3. 数据选择器的测试及应用 (1) 将双 4 选 1 数据选择器 74LS153 参照图 3.2 接线,测试其功能并填写功能表 3.3。 (2)将实验箱脉冲信号源中固定连续脉冲 4 个不 阅读详情

相关推荐

[pytorch] MedicalNet 3D Resnet预训练模型迁移学习实战:从分割到分类的代码改造

本文详细介绍了如何利用PyTorch对MedicalNet 3D ResNet预训练模型进行迁移学习,从分割任务改造为分类任务。通过解析模型结构、调整分类头、加载预训练权重及优化训练策略,帮助开发者在医疗影像领域快速实现高效模型部署。文章还涵盖了数据预处理、增强技巧及模型轻量化等实用内容。

kmeans3miner的博客 246

百度新闻评论内容抓取

通过抓包分析发现,百家号手机app端文章评论内容接口为:https://ext.baidu.com/api/comment/v1/comment/getlist?appid=101&sid=1008524_2-1010050_1-1007549_23033-1007550_23035&cuid=01B5EAF73E8A83BB842BE04E4FB6C656|23200201047...

codingforhaifeng的博客 2422

CVS服务器在Windows的安装配置

1、前言: CVS是版本控制的利器,目前在Linux和Windows下都有不同版本;下面针对Windows的LAN环境下使用CVS的经验介绍,一步一步的介绍如何配置和使用CVS的服务器端和客户端。 2、安装版本: 2.1、服务器端(CVSNT) 1. 本文使用的是CVSNT-2.0.4,这是一个比较稳定的版本,不要使用最新的CVSNT-2.1.1,本人在使用中发现有比较严重的Bug。 2. 下载连

grace_gaorh的专栏 1217

SNN系列|编码篇(2)时序编码

Tempotral Coding 选择编码方法是要根据编码对象以及模型如何处理编码信息进行选择,如下是一种时序信息的编码对比: Threshold-based encoding 又称为tempotral contrast,该方法可以用于编解码一段序列,当差值超过阈值时发放脉冲,阈值是根据编码的序列自适应变化的。 使用该编码方法时,实值序列最好是沿时间变化的,因为在根据差分决定是否发放脉冲后,脉冲的顺序与差分顺序有关。 Time-to-first spike coding 该编码方法将信息用神经元首次

Tianlong Lee的博客 1万+

KIBANA可视化管理界面说明

更说明转自https://blog.youkuaiyun.com/IT_ZRS/article/details/125496588 1 主要结构功能 使用浏览器访问 ip:5601 默认端口,进入首页 Discover:日志管理视图 主要进行搜索和查询 Visualize:统计视图 构建可视化的图表 Dashboard:仪表视图 将构建的图表组合形成图表盘 Timelion:时间轴视图 随着时间流逝的数据 APM:性能管理视图 应用程序的性能管理系统 Canvas:大屏展示

tian830937的专栏 7084

使用CVSNT进行权限控制

  一通过CVS验证模式进行控制(假设系统以Administrator登陆) 1.安装CVSNT。2.设置CVSNT的Repositories到一个具体的目录。3.在Win2000 下设置系统环境变量,确定CVSNT的安装目录在path路径中。4.同时设置Win2000的环境变量CVSROOT到刚才指定的Repositories目录。保存退出。5.打开cmd窗口。输入 cv

wang_xf的Study home 980

拼多多小球直径轨迹重合验证码识别

本文分析了拼多多新型验证码的实现原理与破解思路。该验证码采用Canvas绘制小球弹跳轨迹验证,主要难点在于参数还原和轨迹计算。作者通过逆向工程提取了包括弹跳段数、振幅、旋转参数等关键配置(存储在config.json),并利用Python成功模拟了验证过程。核心算法将滑块值映射为0-1区间,通过三次变换计算小球位置,最终采用斜率截距最小值比对完成验证。整个过程分为静态初始化、核心计算和动态渲染三个阶段,其中干扰元素不影响核心验证逻辑。该研究仅用于技术学习,强调严禁任何违法行为。

码王吴彦祖的博客 1331

TortoiseSVN使用帮助(实例:搭建W…

随着应用软件的开发规模及复杂程度日趋大型化,使得软件开发模式从早期的个人作坊式渐渐转变为团队协作开发方式,在这种团队协作的开发模式,为了管理好开发项目,就离不开版本控制软件,在开发过程中采用版本控制软件,能够完整地保存开发中对应用程序每一个源文件所有的修改记录,充分地利用版本控制软件能够对软件开发进行卓有成效的管理。   常见的版本控制软件有VSS、CVS和SVN   VSS(Visual Sou

157

【CANoe】CAPL_ECU上电后首帧报文发出时间检测

【CANoe】CAPL_ECU上电后首帧报文发出时间检测,通过CANoe I/O口检测电压实现

星Yeah 的博客 2509

45 - Android系统源码-crosvm 实战:基于 KVM 的 Rust 安全虚拟机监控器核心技术

摘要:crosvm 是 Google 开发的基于 KVM 的轻量级虚拟机监控器(VMM),采用 Rust 语言编写,专为 ChromeOS 和 Android 设计。其核心特点包括: 安全架构:通过 Rust 的内存安全特性和多进程隔离(每个设备运行在独立沙箱进程)大幅降低攻击面 性能优化:基于 KVM 的硬件虚拟化支持,结合异步 I/O (io_uring/epoll) 实现高效设备模拟 模块化设计:清晰的 trait 抽象层(Hypervisor/Vm/Vcpu)支持跨平台扩展 Android 集成

保持专注,保持热爱 225

轻松搭建一个Windows SVN服务器

SVN客户端使用的时候,用的SVN服务器通常为外部,例如Google Code的服务器,不过,做为一个程序开发人员,就算自己一个人写程序,也应该有一个SVN版本控制系统,以便对开发代码进行有效的管理。这里我就介绍一个在Windows环境下简单快速搭建SVN服务器的方法。   通常的SVN服务器是搭建在Linux等系统下,例如用Apache+SVN配置,Linux下的SVN性能会非常好,但配置...

yaoyanzhu的博客 199

用业务语义织就企业数据之网:SAP Datasphere 的定位、架构与落地场景全解析

SAP Datasphere作为SAP业务数据云的核心组件,通过语义层整合企业内外部数据,支持实时分析与AI应用。其核心功能包括数据集成、语义建模、虚拟化与仓库能力,通过Spaces实现资源隔离,Data Builder和Business Builder分别面向技术和业务建模。该平台与SAP HANA Cloud、SAC等深度集成,支持财务统一分析、供应链可视化等典型场景,并可通过BW bridge实现传统BW资产云化迁移。Datasphere强调开放互联,能与Databricks等生态伙伴协同,为企业提供

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1363

搭建Windows SVN服务器及TortoiseSVN使用帮助和下载

搭建Windows SVN服务器:   用的SVN服务器通常为外部,例如Google Code的服务器,不过,做为一个程序开发人员,就算自己一个人写程序,也应该有一个SVN版本控制系统,以便对开发代码进行有效的管理。这里我就介绍一个在Windows环境下简单快速搭建SVN服务器的方法。   通常的SVN服务器是搭建在Linux等系统下,例如用Apache+SVN配置,Linux下的SVN性...

weixin_30883777的博客 106

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SVN版本控制器的安装和配置

SVN版本控制器的安装和配置 文章来源:Subversion中文站 如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问题,与CVS相比,Subversion有更多的选择,也更加的容易,几个命令就可以建立一套服务器环境,可以使用起来,这里配套有动画教程。 本文是使用Subversion最快速的教程,在最短的时间里帮助您建立起一套...

weixin_30883271的博客 68

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

CVSNT用户管理方案

这是一篇关于cvsnt服务器搭建的文章。转自http://java.mblogger.cn/scottding/posts/175.aspx但是cvs好像不能单独认证,一定要将某个cvs账户指定为某个nt域用户的别名才可以登陆,不知道是不是因为我没搞好。  CVSNT用户管理方案 所有这些操作基于的环境和软件版本:WINDOWS2000 Pro、CVSNT2.0.4、WinCVS1.3.9

HouYing 1331

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SVN服务器端-------SVN版本控制器的安装和配置

文章来源:Subversion中文站 如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问题,与CVS相比,Subversion有更多的选择,也更加的容易,几个命令就可以建立一套服务器环境,可以使用起来,这里配套有动画教程。本文是使用Subversion最快速的教程,在最短的时间里帮助您建立起一套可用的服务器环境,只需略加调整就可以应用...

weixin_30779691的博客 74

svn Subversion服务器搭建 说明

如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问题,与CVS相比,Subversion有更多的选择,也更加的容易,几个命令就可以建立一套服务器环境,可以使用起来,这里配套有动画教程。 本文是使用Subversion最快速的教程,在最短的时间里帮助您建立起一套可用的服务器环境,只需略加调整就可以应用到实际项目当中。 本教程分为以下几个部门,不仅仅是快速入门,

技术笔记 898

VMware Workstation 虚拟机的安装

★想试Linux,不用重新分区,就像安装Office软件一样,让你直接在Windows中尝鲜。  ★可以反复练习Fdisk、PQmagic等危险软件的使用方法而无需担心破坏实际的计算机系统。  ★一台电脑变成三、四台,同时运行多个操作系统不再是天方夜谭,只要删除一个文件夹即可完成操作系统卸载。  ★组建虚拟的局域网,轻松学习网管知识,进行各种网络试验,根本不必购买交换机、路由器以及网线等网络设备。

goodfunman的专栏 1万+

用Eclipse CDT 配置C/C++ 编译环境

当Visual C++长了尾巴,当Borland C++ Builder臃肿不堪,当钱包空空,难道在Windows下再没有我们可以负担的起而又足够优秀的C++ IDE?当然不是。这个世界上还有一种东西叫开源。本文的目的就是告诉你如何依靠开源软件搭建Windows XP下的C++ IDE(虽然搭配Linux OS是更好的选择,但毫无疑问的是,Windows OS至少在易用性上要远好于Linux OS

goodfunman的专栏 1万+

CVS权限设置

不同用户设置不同的访问权限方法                                          DALANG 20040112关于权限管理的操作,我感觉不错的 假设有用户1:lxw ;用户2:zxh有用户1的模块::lxwdir;用户2的模块:zxhdir要求 lxw 只能访问lxwdir;zxh只能访问zxhdir第1步,设置CVS的库配置文件(模块CVSROOT)的访问权限方

goodfunman的专栏 1万+
上一篇: CVSNT用户管理方案
下一篇: CVS权限设置
goodfunman
博客等级 码龄22年 4粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值