Discussion:
Non-system user not able to check in
Gaurav Chhabra
2009-04-13 10:08:51 UTC
Permalink
Hi,


My friend is using CVS 1.11.17 (as a server) on SunOS (Kernel version:
Generic_108528-24 & Processor: sparc) machine and WinCVS 2.0 GUI. The CVS
passwd file contained only one row and had system user name present in it
(third field). All developers were using the same name (jim) for check in &
check out.

jim:xp88dsdkkllyydk:cvstest

This was bad because this way, we will not be able to know who did what.
Anything that anyone does will be logged in CVS history as user jim’s
changes. Please correct me if I’m wrong.

So I thought of adding all the usernames to the CVSROOT passwd file. When I
added one more entry to the CVS passwd file (with no system user name
present in the 3rd field) and tried logging in using WinCVS, I was able to
successfully login and checkout the code but I couldn’t check in the
modified code. It gave the following error:

cvs commit: Empty password used – try ‘cvs login’ with a real password
cvs [commit aborted]: authorization failed: server XYZ rejected access to
/usr/local/data/ for user cvstest
***** CVS exited normally with code 1 *****

Contents of CVS passwd file:
---------------------------
jim:xp88dsdkkllyydk:cvstest
fish:rKa5jzULzmhOo
---------------------------

What I understood from the official CVS guide is that CVS passwd file CAN
contain any imaginary username (one that is not present in Unix /etc/passwd
file). Even if user 'fish' is not a system user name, it should be able to
login and perform all CVS operations.

We are able to perform all CVS operations only in the following cases:
1. First field of CVS passwd file contains a system user name with NO third
field.
2. First field of CVS passwd file contains an imaginary name and third field
contains a system user name.

Can anyone please explain me this behaviour?


Regards,
Gaurav
--
View this message in context: http://www.nabble.com/Non-system-user-not-able-to-check-in-tp23020300p23020300.html
Sent from the Gnu - Cvs - Info mailing list archive at Nabble.com.
Larry Jones
2009-04-13 14:20:58 UTC
Permalink
Post by Gaurav Chhabra
What I understood from the official CVS guide is that CVS passwd file CAN
contain any imaginary username (one that is not present in Unix /etc/passwd
file). Even if user 'fish' is not a system user name, it should be able to
login and perform all CVS operations.
You understand incorrectly.
Post by Gaurav Chhabra
1. First field of CVS passwd file contains a system user name with NO third
field.
2. First field of CVS passwd file contains an imaginary name and third field
contains a system user name.
Can anyone please explain me this behaviour?
That's the way it's supposed to work. (There's also a third case where
both the first and third fields contain system user names.) CVS always
has to run as some system user, so if the first field is not a system
user, you have to specify the third field to tell CVS which system user
to run as.
--
Larry Jones

These findings suggest a logical course of action. -- Calvin
Loading...