File: //scripts.20110531.215904.25158/rebuildetcpasswd
#!/usr/bin/perl
print "This script is deprecated and dangerous to use in almost all circumstances.\n";
print "It is strongly advised to try rebuilding /etc/passwd from any available backups or rcs versions:\n";
print "\n\t# cd /etc/\n";
print "\t# rlog passwd\n";
print "\t# rcsdiff -r\$VER passwd |sed -e 's/> //' > /etc/passwd.recovered (where \$VER is a recent rcs checkin found in the previous rlog command.)\n";
print "\nThe same method may be used for /etc/shadow as well, or master.passwd on FreeBSD.\n";
# comment out the following line if you are 100% sure you want to run this.
exit(0);
open(CONF,"/etc/wwwacct.conf") || die "/etc/wwwacct.conf not found\n";
while(<CONF>) {
$_ =~ s/\n//g;
if ($_ !~ /^;/) {
if(/^HOMEDIR (\S+)$/) {
$homedir = $1;
}
}
}
close(CONF);
opendir(HD,"$homedir");
@USERS=readdir(HD);
closedir(HD);
foreach my $user (@USERS) {
if (-d "$homedir/$user") {
my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks)
= stat("$homedir/$user");
next if ($uid < 500);
$mytime = int(time() / (60*60*24));
push(@PASSWD,"${user}:x:${uid}:${gid}::${homedir}/${user}:/usr/local/cpanel/bin/jailshell");
push(@GROUP,"${user}:x:${gid}:${user}");
push(@SHADOW,"${user}:!!:${mytime}::::::");
}
}
open(PASSWD,">>/etc/passwd");
foreach(@PASSWD){ print PASSWD; print PASSWD "\n"; }
close(PASSWD);
open(GROUP,">>/etc/group");
foreach(@GROUP){ print GROUP; print GROUP "\n"; }
close(GROUP);
open(SHADOW,">>/etc/shadow");
foreach(@SHADOW){ print SHADOW; print SHADOW "\n"; }
close(SHADOW);