For Programmers: Free Programming Magazines  


Home > Archive > PERL CGI Beginners > April 2005 > Using getpwnam() with CGI









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Using getpwnam() with CGI
Jason Williard

2005-04-22, 8:55 pm

I am trying to create a script to install spam filters on a per user basis.
The script will have a web UI where the user should be able to login and
enable or disable the filters. My original script, which was a command-line
perl script, used User::pwent getpwnam() to get the user's encrypted
password from the shadow file and compare it with the encrypted password
that the user submitted. This worked perfectly. Unfortunately, when I run
it from a command line, the passwd object passed by getpwnam() is always 'x'
which it is grabbing from the passwd file. Does anyone know how I can fix
this?

Here are the important parts of the code:

#!/usr/bin/suidperl -U
$current_id = $<; #get the current user id
my($name,$passwd,$uid,$gid,$quota,$comme
nt,$gcos,$dir,$shell) =
getpwnam("root"); #get user nobody's details
$< = $uid;

use User::pwent;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);

sub authUser {
# set sub variables
my($username,$userpass,$password) = @_;
if ( crypt($password,$userpass) eq $userpass ) {
return 1;
} else {
return 0;
}
}

....

# Set UserInfo
my $user = getpwnam($mailbox);
my $username = $user->name;
my $userpass = $user->passwd;
my $userdir = $user->dir;
my $useruid = $user->uid;
my $usergid = $user->gid;


---
Thanks,
Jason Williard


Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com