version 1.1, 2001/10/23 03:43:02
|
version 1.2, 2001/11/15 18:13:32
|
Line 1
|
Line 1
|
#!/usr/bin/perl |
#!/usr/bin/perl |
|
|
|
# The Learning Online Network |
|
# |
|
# pwchange - setuid script to change unix passwords |
|
# |
|
# YEAR=2001 |
|
# 10/23,11/13,11/15 Scott Harrison |
|
# |
|
# $Id$ |
|
### |
|
|
use strict; |
use strict; |
|
|
|
my $VERSION = 1.1; |
|
|
|
# ------------------------------------------------------------------ Untainting |
$ENV{'PATH'}='/bin:/usr/bin'; # Nullify path information. |
$ENV{'PATH'}='/bin:/usr/bin'; # Nullify path information. |
$ENV{'BASH_ENV'}=''; # Nullify shell environment information. |
delete @ENV{qw(IFS CDPATH ENV BASH_ENV)}; # nullify potential taints |
|
|
|
# ----------------------------- Make sure this process is running from user=www |
|
my $wwwid=getpwnam('www'); |
|
if ($wwwid!=$<) { |
|
exit 1; |
|
} |
|
# ----------------------------------------------- If not running setuid as root |
if ($>!=0) { |
if ($>!=0) { |
exit 1; |
exit 1; |
} |
} |
|
|
|
# ----------------------------------------------- Make sure arguments are valid |
my $user=shift @ARGV; |
my $user=shift @ARGV; |
$user=~/^(\w+)$/; |
$user=~/^(\w+)$/; |
my $safe=$1; |
my $safe=$1; |
Line 22 my $pbad=0;
|
Line 42 my $pbad=0;
|
map {if (($_<32)&&($_>126)){$pbad=1;}} (split(//,$pword)); |
map {if (($_<32)&&($_>126)){$pbad=1;}} (split(//,$pword)); |
exit 3 if $pbad; |
exit 3 if $pbad; |
|
|
|
# --------------------------------------------------------- Call system command |
open OUT,"|passwd --stdin $safe >/dev/null"; |
open OUT,"|passwd --stdin $safe >/dev/null"; |
print OUT $pword; |
print OUT $pword; |
print OUT "\n"; |
print OUT "\n"; |
close OUT; |
close OUT; |
|
|
|
# --------------------------------------- exit with status of command execution |
exit $?/256; |
exit $?/256; |
|
|
|
=head1 NAME |
|
|
|
pwchange - setuid script to change unix passwords |
|
|
|
=head1 DESCRIPTION |
|
|
|
Setuid script to change unix passwords. |
|
|
|
=head1 README |
|
|
|
Setuid script to change unix passwords. |
|
|
|
=head1 PREREQUISITES |
|
|
|
=head1 COREQUISITES |
|
|
|
=pod OSNAMES |
|
|
|
linux |
|
|
|
=pod SCRIPT CATEGORIES |
|
|
|
LONCAPA/Administrative |
|
|
|
=cut |