George Schlitz wrote: > I am using the $CVSROOT/CVSROOT/passwd file to store login > information for > many users who don't have user accounts on the unix server. > > Here are some examples: > user1:rFw.zb2Ewn6..:cvsuser > user2:Mb3Czoc1zMBrU:cvsuser > user3:Mb3Czoc1zMBrU:cvsuser > > I am using several administrative files (taginfo, commitinfo > et. al.) to > kick off scripts to perform various kinds of validation. > In this example, $USER always expands to "cvsuser" in these > scripts. Is > there any way to determine the login name- for example, I > want to determine > that the current user is "user1" so that I can differentiate > between my > non-system-account cvs users. > > Are there any variables set that can provide this information > to the admin > files? > Basically, I want to be able to allow users to access the CVS > repository > without having to manage unix logons, but still control > different levels of > controls/permissions for these users on a module by module basis. > > Thanks! > George
George, I restrict people from being able to commit to CVSROOT by using commitinfo. I added the following line to commitinfo: CVSROOT $CVSROOT/CVSROOT/commitinfo_ckuser -user=$USER I added commitinfo_ckuser in checkoutlist so that it is available with the other administrative files. And my commitinfo_ckuser program looks like the following: ---------------------- < cut here > ---------------------------------- #!/usr/local/bin/perl -ws # commitinfo_ckuser D.Miller # called by commitinfo # # $Id: commitinfo_ckuser,v 1.6 2000/09/20 16:06:46 miller Exp $ # # This program is called by $CVSROOT/CVSROOT/commitinfo # and is used to verify if user is authorized for changing CVSROOT # so that commit to CVSROOT files can be restricted # # The logfile is not used at this time. # $user = $ENV{"USER"} unless defined $user; $CVSROOT = $ENV{"CVSROOT"} unless defined $CVSROOT; $logfile = "$CVSROOT/CVSROOT/commitinfo_ckuser.log" unless defined $logfile; print "\$CVSROOT=$CVSROOT\n"; %authorized = ($user =>0, #prevent uninitialized variable 'miller' =>1, #authorized users for CVSROOT checkin 'heuston' =>1, 'cmbuild' =>1, 'cmvmgr' =>1, 'brodzell' =>1 ); ($repository, @files) = @ARGV; $ck_user = @ck_user = getpwnam $user; # checking if user exists locally if ($repository =~ /$CVSROOT\/CVSROOT/) { if (($authorized{$user} == 0) || ($ck_user == 0)) { print "You are not authorized to commit CVSROOT files.\n"; exit 1; # <<<<----------------------<<<<<<<<<<< } } exit 0; # <<<<----------------------<<<<<<<<<<< # current date and time $sec = $mday = $mday = $wday = $wday = $yday = $isdst = 0; #not used ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = gmtime(time); $date = sprintf("%4d%02d%02s-%02d:%02d", ($year + 1900), ($mon + 1), $mday, $hour, $min); open(LOGFILE, ">>$logfile") or die "Cannot append to $logfile: $!\n"; print LOGFILE "$date $user $repository @files\n"; close(LOGFILE); ---------------------- < cut here > ---------------------------------- I currently have the log file code turned off. This version has a hard coded list of authorized users, however, I have also done it by checking the users group. This version also checks if a person has a local account using: $ck_user = @ck_user = getpwnam $user; # checking if user exists locally If none of your users have local accounts you could use that method and have no hard coded authorized list. Dale Miller _______________________________________________ Info-cvs mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/info-cvs