CVSNT在Windows下的安装和使用

[不指定 2006/05/31 23:24 | by ipaddr ]
先说下CVSNT的用户验证方式,CVSNT的用户验证方式分两种:Windows系统用户与CVSNT用户共存的混合验证方式,及CVSNT用户 单一验证方式,默认工作在混合验证方式下,当然使用单一验证方式对用户的管理肯定比较方便一点,因此下面的配置就是围绕该方式进行的。各个资源库所使用的 验证方式及用户配置由其目录下CVSROOT里的配置文件决定,其中有几个比较重要的文件。

环境补充:
CVSNT版本: 2.5.20 Build 2115
CVS安装路径:D:\CVSNT
Repository Name:iManage,Repository Path:D:\CVS\
默认Run as user:[client user]
操作系统有一个User为cvsuser,用于CVS访问文件系统.
(Windows的cvsuser用户,建议加入Administrators组,否则,可能会在访问文件系统时出现错误,比如,cvsuser不能使用TEMP目录来做diff)

(此文档部分内容来源互联网,但原文档有少许错误,或者是因为CVSNT一些更新导致原文档无法使用,Ipaddr经过多次测试后更新了本文档.)

1、config文件

控制CVSNT的验证工作方式的就是config文件,注意该文件最前面的两行:

#Set this to `no" if pserver shouldn"t check system users/passwords
#SystemAuth=yes

第二行就是我们要修改的内容,默认状态是被注释掉的,SystemAuth有两个值yes和no:

yes:pserver将使用Windows系统用户和CVSNT用户来共同验证(若CVSNT用户未定义,则用Windows系统用户来进行验证),默认为yes,CVSNT用户在后面将要介绍的passwd文件中定义。

no:只使用CVSNT用户来进行验证。

该文件可以在客户端进行修改,因此我们可以将其checkout出来将第二行改为SystemAuth=no,并commit到CVSNT上就可以启用单一验证方式了,注意启用单一验证方式后原来的Windows系统用户将变为无效,因此要注意执行该步骤的时机。

2、 admin文件

该文件保存CVSNT管理员用户列表,内容很简单,形式如下:
User1
User2
User3
每一行定义一个管理 员用户,默认时没有该文件,但你可以在客户端自己添加并add上去,再commit到CVSNT上,但是光有这个文件还是不会生效的,还要将其添加到 checkoutlist文件中,使CVSNT能够读取该文件的内容,在checklist中添加文件列表的格式为:

[空格]文件名 出错信息

其中文件名前的空格必须要有的,不然会出错。
我们可以先添加admin文件到CVSNT中,再修改checkoutlist文件commit,就可以使admin文件生效了。

(另外一种说法是:admin文件可以直接在文件系统里修改,不需要checkout再checkin)
(checkoutlist表示哪些用户可以check out CVSROOT目录)

3、passwd文件

服务器工作在CVSNT用户单一验证方式下的时候,这个文件定义了CVSNT的用户信息,这里面保存着用户名,用户密码,以及别名信息。默认状态下 没有该文件,但是我们可以在CVSNT还工作在混合验证方式下时,用系统管理员登录,通过添加用户命令来让CVSNT自动建立一个passwd文件。

添加用户的命令的示例:

cvs passwd –r administrator –a cvsadmin

之后系统提示输入密码,输入后服务器会新建一个passwd文件。

该文件的内容很简单,形式如下:

cvsadmin:fqr1fS4gDghrt:administrator
kid:aTXRfS31Bm6JA
mystique:Yna4QcXz9dEqd

以第一行为例:cvsadmin为用户名,fqr1fS4gDghrt为CVS使用UNIX标准加密函数对密码进行加密后的结果,administrator为该用户对应Windows OS的User

(ipaddr特别提示:如果没有对应的Windows系统的User,CVSNT控制台的Run as User必须指定为一个User,而不能是[client user],否则,该用户无法登录)

注意:这个文件是不能在客户端进行修改的,不能checkout出来。

4、group文件

该文件定义CVSNT中组信息,同组里的用户拥有一样的权限,对组权限的修改和对用户权限的修改一样。

group文件的内容为

administrators:cvsadmin kid mystique
users:User1 User2 User3

可以看到该文件的内容也很简单,组名:用户名,多个用户名之间用空格隔开。

Group文件可以在客户端修改,不用修改checkoutlist这个文件,系统会自动使其生效。

作为组里面的特定成员可以赋给特定的权限。

了解了以上内容,下面我说一下我自己的配置步骤,我没有使用WinCVS进行操作,是直接使用命令行进行修改的,觉得这样思路比较清晰:

1、添加系统变量CVSROOT=D:/CVS,并把D:\CVSNT加入到系统Path路径。

2、进入命令提示符,因为此时为混合验证模式,可以不用不用登陆直接进行checkout。可以建立一个工作目录,在该目录下进行操作,我这里为D:/Work。

检出CVSROOT目录:

cvs co CVSROOT

3、添加CVSNT系统管理员用户,此时会提示设置用户密码:

cvs passwd –r administrator –a cvsadmin

4、修改CVSROOT访问权限:

cd CVSROOT
cvs chown cvsadmin   //更改所有者为cvsadmin
cvs chacl -u default -a none   //默认权限为n
cvs chacl -u cvsadmin -a all //添加cvsadmin

5、修改config文件,按上面的方法修改后commit:

cvs ci

6、此时单一验证方式已经启用了,也就是只能使用刚才添加的cvsadmin进行登录,
此时必须把CVSNT控制面板上的Run as user:设置为操作系统对应的一个用户,比如这里的cvsuser(cvsuser最好是属于Administrators组).

登录前还要改一下系统变量CVSROOT,关闭命令提示符窗口,修改CVSROOT为:

:pserver:cvsadmin@192.168.1.5/iManage

这里的192.168.1.5是服务器的IP地址,/iManage就是前面设置Repository时设置的Name,可以改为你机器上的配置。修改系统变量之后以下的步骤在任何与服务器相连的机器上进行,当然该机器上应该有CVSNT的可执行文件。

7、如果为了避免出现错误,先重启一下CVSNT服务器,再启动命令提示符来到D:/Works,因为已经启用单一验证方式,先要进行登录。

cvs login

输入密码,此时就是以cvsadmin登录了。

8、添加admin文件,首先将CVSROOT检出,在CVSROOT下新建admin文件,内容为

cvsadmin

执行命令:

cvs add admin
cvs ci

9、修改checkoutlist文件,在该文件末尾添加一行:

[空格]admin  error message

注意:admin前的空格不能少。

执行命令:

cvs ci

经过以上步骤,可以说用户配置已经基本完成了,CVSNT可以很好的工作在单一验证方式下。进一步的管理可使用以下命令:

添加用户: cvs passwd -a username,使用时不必理会需要添加别名的提示。

修改用户权限:cvs chacl -u username -a all|none|write...
(详细的帮助,可以查看cvs chacl)

要添加组管理,只需同添加admin步骤一样,按照格式要求新建group文件即可。

wget使用详解(转)

[不指定 2006/05/29 23:25 | by ipaddr ]
wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上。它有以下功能和特点:

  (1)支持断点下传功能;这一点,也是网络蚂蚁和FlashGet当年最大的卖点,现在,Wget也可以使用此功能,那些网络不是太好的用户可以放心了;
  (2)同时支持FTP和HTTP下载方式;尽管现在大部分软件可以使用HTTP方式下载,但是,有些时候,仍然需要使用FTP方式下载软件;
  (3)支持代理服务器;对安全强度很高的系统而言,一般不会将自己的系统直接暴露在互联网上,所以,支持代理是下载软件必须有的功能;
  (4)设置方便简单;可能,习惯图形界面的用户已经不是太习惯命令行了,但是,命令行在设置上其实有更多的优点,最少,鼠标可以少点很多次,也不要担心是否错点鼠标;
  (5)程序小,完全免费;程序小可以考虑不计,因为现在的硬盘实在太大了;完全免费就不得不考虑了,即使网络上有很多所谓的免费软件,但是,这些软件的广告却不是我们喜欢的;


   wget虽然功能强大,但是使用起来还是比较简单的,基本的语法是:wget [参数列表] URL。下面就结合具体的例子来说明一下wget的用法。
   1、下载整个http或者ftp站点。
   wget http://place.your.url/here
   这个命令可以将http://place.your.url/here  首页下载下来。使用-x会强制建立服务器上一模一样的目录,如果使用-nd参数,那么服务器上下载的所有内容都会加到本地当前目录。

   wget -r http://place.your.url/here
    这个命令会按照递归的方法,下载服务器上所有的目录和文件,实质就是下载整个网站。这个命令一定要小心使用,因为在下载的时候,被下载网站指向的所有地址 同样会被下载,因此,如果这个网站引用了其他网站,那么被引用的网站也会被下载下来!基于这个原因,这个参数不常用。可以用-l number参数来指定 下载的层次。例如只下载两层,那么使用-l 2。

   要是您想制作镜像站点,那么可以使用-m参数,例如:wget -m http://place.your.url/here
   这时wget会自动判断合适的参数来制作镜像站点。此时,wget会登录到服务器上,读入robots.txt并按robots.txt的规定来执行。

   2、断点续传。
   当文件特别大或者网络特别慢的时候,往往一个文件还没有下载完,连接就已经被切断,此时就需要断点续传。wget的断点续传是自动的,只需要使用-c参数,例如:
   wget -c http://the.url.of/incomplete/file
   使用断点续传要求服务器支持断点续传。-t参数表示重试次数,例如需要重试100次,那么就写-t 100,如果设成-t 0,那么表示无穷次重试,直到连接成功。-T参数表示超时等待时间,例如-T 120,表示等待120秒连接不上就算超时。

   3、批量下载。
   如果有多个文件需要下载,那么可以生成一个文件,把每个文件的URL写一行,例如生成文件download.txt,然后用命令:wget -i download.txt
这样就会把download.txt里面列出的每个URL都下载下来。(如果列的是文件就下载文件,如果列的是网站,那么下载首页)

   4、选择性的下载。
   可以指定让wget只下载一类文件,或者不下载什么文件。例如:
   wget -m --reject=gif http://target.web.site/subdirectory
   表示下载http://target.web.site/subdirectory ,但是忽略gif文件。--accept=LIST 可以接受的文件类型,--reject=LIST拒绝接受的文件类型。

   5、密码和认证。
   wget只能处理利用用户名/密码方式限制访问的网站,可以利用两个参数:
   --http-user=USER设置HTTP用户
   --http-passwd=PASS设置HTTP密码
   对于需要证书做认证的网站,就只能利用其他下载工具了,例如curl。

   6、利用代理服务器进行下载。
   如果用户的网络需要经过代理服务器,那么可以让wget通过代理服务器进行文件的下载。此时需要在当前用户的目录下创建一个.wgetrc文件。文件中可以设置代理服务器:
   http-proxy = 111.111.111.111:8080
   ftp-proxy = 111.111.111.111:8080
   分别表示http的代理服务器和ftp的代理服务器。如果代理服务器需要密码则使用:
   --proxy-user=USER设置代理用户
   --proxy-passwd=PASS设置代理密码
   这两个参数。
   使用参数--proxy=on/off 使用或者关闭代理。
   wget还有很多有用的功能,需要用户去挖掘。

附录:

命令格式:
  wget [参数列表] [目标软件、网页的网址]

  -V,--version 显示软件版本号然后退出;
  -h,--help显示软件帮助信息;
  -e,--execute=COMMAND 执行一个 “.wgetrc”命令

  -o,--output-file=FILE 将软件输出信息保存到文件;
  -a,--append-output=FILE将软件输出信息追加到文件;
  -d,--debug显示输出信息;
  -q,--quiet 不显示输出信息;
  -i,--input-file=FILE 从文件中取得URL;

  -t,--tries=NUMBER 是否下载次数(0表示无穷次)
  -O --output-document=FILE下载文件保存为别的文件名
  -nc, --no-clobber 不要覆盖已经存在的文件
  -N,--timestamping只下载比本地新的文件
  -T,--timeout=SECONDS 设置超时时间
  -Y,--proxy=on/off 关闭代理

   -nd,--no-directories 不建立目录
  -x,--force-directories 强制建立目录

   --http-user=USER设置HTTP用户
  --http-passwd=PASS设置HTTP密码
  --proxy-user=USER设置代理用户
  --proxy-passwd=PASS设置代理密码

   -r,--recursive 下载整个网站、目录(小心使用)
  -l,--level=NUMBER 下载层次

   -A,--accept=LIST 可以接受的文件类型
  -R,--reject=LIST拒绝接受的文件类型
  -D,--domains=LIST可以接受的域名
  --exclude-domains=LIST拒绝的域名
  -L,--relative 下载关联链接
  --follow-ftp 只下载FTP链接
  -H,--span-hosts 可以下载外面的主机
  -I,--include-directories=LIST允许的目录
  -X,--exclude-directories=LIST 拒绝的目录


   中文文档名在平常的情况下会被编码, 但是在 --cut-dirs 时又是正常的,
   wget -r -np -nH --cut-dirs=3 ftp://host/test/
     测试.txt                                                              
   wget -r -np -nH -nd ftp://host/test/
     %B4%FA%B8%D5.txt                                              
   wget "ftp://host/test/ *"
     %B4%FA%B8%D5.txt

    由於不知名的原因,可能是为了避开特殊档名, wget 会自动将抓取档名的部分用 encode_string 处理过, 所以该 patch 就把被  encode_string 处理成 "%3A" 这种东西, 用 decode_string 还原成 ":", 并套用在目录与档案名称的部分, decode_string 是 wget 内建的函式。


生活随想

[不指定 2006/05/24 23:38 | by ipaddr ]
阳光总在风雨后....

很多不可能的事情,换个角度思考也许就不一样了。

Windows下安装Apache,PHP,Mysql,PHPMyAdmin,

PHPMyAdmin提示没有发现 PHP 的扩展设置mbstring,主要原因是PHP不支持mbstring

解决办法:

1.Nix下,编译PHP时加上mbstring支持

2.Windows下,配置php.ini

extension_dir = "c:/php/extensions/"
(建议写全路径,并且,后面要带/)

extension=php_mbstring.dll

可能通过查看phpinfo();来确认php.ini的位置以及PHP当前支持的一些特性。

问:怎么才能关掉一个用任务管理器关不了的进程?我前段时间发现我的机子里多了一个进程,只要开机就在,我用任务管理器却怎么关也关不了。   
  
  答1:杀进程很容易,随便找个工具都行。比如IceSword。关键是找到这个进程的启动方式,不然下次重启它又出来了。顺便教大家一招狠的。其实用Windows自带的工具就能杀大部分进程:   
  
  c:>ntsd -c q -p PID   
  
  只有System、SMSS.EXE和CSRSS.EXE不能杀。前两个是纯内核态的,最后那个是Win32子系统,ntsd本身需要它。ntsd从2000开始就是系统自带的用户态调试工具。被调试器附着(attach)的进程会随调试器一起退出,所以可以用来在命令行下终止进程。使用ntsd自动就获得了debug权限,从而能杀掉大部分的进程。ntsd会新开一个调试窗口,本来在纯命令行下无法控制,但如果只是简单的命令,比如退出(q),用-c参数从命令行传递就行了。Ntsd 按照惯例也向软件开发人员提供。只有系统开发人员使用此命令。用法:开个cmd.exe窗口,输入:   
  
  ntsd -c q -p PID   
  
  把最后那个PID,改成你要终止的进程的ID。如果你不知道进程的ID,任务管理器->进程选项卡->查看->选择列->勾上"PID(进程标识符)",然后就能看见了。
   
  答2:xp下还有两个好东东tasklist和tskill。tasklist能列出所有的进程,和相应的信息。tskill能查杀进程,语法很简单:tskill 程序名!!

分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]