Running as a system administrator.
Download latest CVSNT distribution.
If not already installed, download and install Microsoft Visual C++ 2008 Redistributable Package (x86)
When upgrading, stop and uninstall any previous versions
net stop CVSLock net stop CVSNT cvslock -u cvsservice -u
Unpack; I advice unpacking into c:\cvsnt avoiding possible contamination of/by alternative CVSNT installations, for example bundled with WinCVS and Tortisecvs; Note most alternative installations (including cygwin) can run side-by-side.
You need one account which will be a CVS administrative account and generally one (or more) which shall act as normal user accounts.
The two accounts may either be created using the Computer Management console or directly, as below.
1] The CVS administrator needs to be an administrator plus have service rights enabled.
The account shall only be used by the service, therefore should have limited login functionality, as follows:
net user cvsservice [passwd] /add /expires:never /passwordchg:no \ /comment:"cvsservice account" /usercomment:"cvsservice account" \ /workstation:"[host-name]" net localgroup administrators cvservice /add wmic UserAccount where Name=\"cvservice" set PasswordExpires=FALSE editrights -u cvsservice -a SeAssignPrimaryTokenPrivilege editrights -u cvsservice -a SeCreateTokenPrivilege editrights -u cvsservice -a SeTcbPrivilege editrights -u cvsservice -a SeServiceLogonRight Note: 'editrights' is available under cygwin, itherwise use 'ntrights' or the window control panel.
I advise the same account has non-service related login abilities disabled.
editrights -u cvsservice -a SeDenyInteractiveLogonRight editrights -u cvsservice -a SeDenyNetworkLogonRight editrights -u cvsservice -a SeDenyBatchLogonRight
2] Create an optional "cvsuser" account; I advise that this account owns the CVS repository.
net user cvsuser [passwd] /add /expires:never /passwordchg:no \ /comment:"cvsuser account" /usercomment:"cvsuser account" \ /workstation:"[hostname]" wmic UserAccount where Name=\"cvsuser\" set PasswordExpires=FALSE editrights -u cvsuser-a SeDenyInteractiveLogonRight editrights -u cvsuser -a SeDenyNetworkLogonRight editrights -u cvsuser -a SeDenyBatchLogonRight
cd c:\cvsnt cvslock -i cvsservice -i config "CVSNT" obj= ".\cvsservice" password= "[password]"
netsh advfirewall firewall add rule name=cvsnt_server \ description="CVSNT legacy cvs service" \ protocol=tcp dir=in localport=2401 \ program="c:\cvsnt\cvservice.exe" \ action=allow profile=private,domain netsh advfirewall firewall add rule name=cvsnt_lock \ description="CVSNT legacy lock service" \ protocol=tcp dir=in localport=2402 \ program="c:\cvsnt\cvslock.exe" \ action=allow profile=private,domain
net start CVSLock net start CVSNT
Add the CVS repository details into the Repository configuration Tab plus review remaining tabs.
rundll32 shell32.dll, Control_RunDLL "c:\cvsnt\cvsntcpl.dll"
Upon initial installation no accounts are available,as such the windows sspi authentication mode must be used to enable pserver
and/or sserver
account access. Under the previously created cvsuser
account, open a command window and execute.
set cvsroot=:sspi:<computername>:/[repository] cvs passwd -a <account name>
You will now be asked to enter a password for this user. This password is only for CVS use so it should not be the real system password! Enter the password twice. Now the CVSROOT/passwd file will be created and the user you entered will be added to the list in this file.
In order to have many CVS user logins you don't need to create masses of system accounts! Instead you can "alias" a CVS login to a "real" account using this command:
cvs passwd -r <real accountname> -a <cvs login name>
What will happen now is that to CVS the user will be known and registered as the CVS login given in the command, but for file operations that will encounter permission issues the commands will be executed in the context of the real system account that was aliased. This makes it possible to use NTFS file system permissions to limit access to certain parts of the repository to some users. You simply create a system account for which you set limited permissions and then you alias the CVS login to this user.
Note that this command will fail if there is a space embedded in the real account name! DON'T ever use spaces in these contexts!!!!! (But using quotes may solve the problem like this:
cvs passwd -r "system admin" -a "new user
Since I don't have a valid user with embedded space I could not check the quotes trick with the valid user name parameter, but adding a CVS login with space embedded can be done with quotes.)
Examples:
cvs passwd -r cvsuser -a charlie
or if you want the new user to be a CVS administrator:
cvs passwd -r cvsadmin -a rogerh
Note about Domain users:
You can add domain users with the following command:
cvs passwd -r <real accountname> -D <domain name> -a <cvs login name>
This command is reported by a user to have worked for him. I cannot check it because I don't have a domain. But based on information from the mail list I think that it will only work if there is a trust between the CVSNT server PC and the domain controller. If the CVSNT server PC is a member of the domain then this is the case.
The server is now ready to be used and you can check the pserver functionality by doing this:
.
CVSNT 2.5.05 legacy published