MATT::Passwd - Common Unix Passwd functions
MATT::Passwd is a grouping of frequently used functions I've written for interacting with /etc/passwd entries.
Crypt::PasswdMD5 - /usr/ports/security/p5-Crypt-PasswdMD5
use MATT::Passwd;
$r = UserSanity($user, $denylist);
if ( $r->{'rc'} ) { print "success" } else { print $r->{'error' };
$user is the username. Pass it along as a scalar (string).
$denylist is a optional hashref. Define all usernames you want reserved (denied) and it'll check to make sure $user is not in the hashref.
Checks:
* Usernames must be between 2 and 16 characters. * Usernames must have only lower alpha and numeric chars * Username must not be defined in $denylist hash * If the file /usr/local/etc/passwd.reserved exists, the username must not exist in that file.
The format of passwd.reserved is simply one username per line.
A hashref ($r) gets returned that will contain at least rc, and error.
$r->{'rc'} will contain a result code of 0 (failure) or 1 (success).
$r->{'error'} will contain a string with a description of which test failed.
use MATT::Passwd;
$r = PasswordSanity($password, $username);
if ( $r->{'rc'} ) { print "success" } else { print $r->{'error' };
$password is the password the user is attempting to use.
$username is the username the user has selected.
Checks:
Passwords must have at least 6 characters. Passwords must have no more than 128 characters. Passwords must not be the same as the username Passwords must not be purely alpha or purely numeric Passwords must not be in reserved list (/usr/local/etc/passwd.badpass)
$r is a hashref that gets returned.
$r->{'rc'} will contain a result code of 0 (failure) or 1 (success).
$r->{'error'} will contain a string with a description of which test failed.
use MATT::Passwd; if ( DoesSysUserExist($user) ) { InstallUser($user); };
$user is the username you are adding. This function merely checks to see if the user exists in the system password files. I use this before adding a new user (easy error trapping) and again after adding a user (to verify success).
Encrypt ($pass, $debug)
Encrypt (MD5) the plain text password that arrives at $pass.
BackupMasterPasswd ($file)
Back up the /etc/master.passwd database. This copies $file to a new file named $file.nnnnnn with nnnnnn being a date/timestamp.
VerifyMasterPasswd ($passwd, $change, $debug)
Verify that new master.passwd is the right size. I found this necessary on some versions of FreeBSD as a race condition would cause the master.passwd file to get corrupted. Now I verify that after I'm finished making my changes, the new file is a small amount larger (or smaller) than the original.
$passwd is the filename of your master.passwd file.
$change is whether the file should ``shrink'' or ``grow''
InstallGroup ($group, $gid)
Installs a system group. The $gid is optional.
InstallUser ($user, $shell, $homedir, $uid, $gid, $passwd)
Installs a system user. The $shell and $homedir variables are optional.
Matt Simerson <matt@cadillac.net>
None known. Report any to author.
Don't export any of the symbols by default. Move all symbols to EXPORT_OK and explicitely pull in the required ones in programs that need them.
http://www.tnpi.biz/internet/ http://www.tnpi.biz/computing/
MATT::Apache, MATT::DNS, MATT::FreeBSD, MATT::Mysql, MATT::Passwd, MATT::Perl, MATT::Qmail, MATT::Quota MATT::SSL, MATT::Utility
Copyright 2003, The Network People, Inc. All Rights Reserved.