File: //proc/self/root/scripts.20110531.215904.25158/fixsuexeccgiscripts
#!/usr/bin/perl
# cpanel4 - scripts Copyright(c) 1997-2002 DarkORB Communications Inc.
# All rights Reserved.
# copyright@cpanel.net http://cpanel.net
# This code is subject to the cpanel license. Unauthorized copying is prohibited
require "/scripts/safetybits.pl";
$|=1;
if ($ARGV[0] eq "-q") {
close(STDOUT);
}
print "Scanning suexec_log.";
$lc = 0;
open(SUEXECLOGT,"/usr/local/apache/logs/suexec_log.offset");
chomp($start = <SUEXECLOGT>);
close(SUEXECLOGT);
my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks)
= stat("/usr/local/apache/logs/suexec_log");
if ($size == $start) { print "..Done\n"; exit; }
open(SUEXECLOG,"/usr/local/apache/logs/suexec_log");
if ($size > $start) {
seek(SUEXECLOG,$start,0);
}
while(<SUEXECLOG>) {
$lc++;
if ($lc % 500 == 0) { print "."; }
if ($lc % 10000 == 0) { print "\n"; }
next if /mailman/;
next if !/public_html/;
if (/directory is writable by others/ || /file is writable by others/) {
/\(([^\)]+)\)/;
$BADCGI{$1} = 1;
}
}
$end = tell(SUEXECLOG);
close(SUEXECLOG);
open(SUEXECLOGT,">/usr/local/apache/logs/suexec_log.offset");
print SUEXECLOGT "$end\n";
close(SUEXECLOGT);
print "Done\n";
foreach my $cgi (sort keys %BADCGI) {
my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks)
= stat($cgi);
if($uid > 99 && $gid >= 99) {
print "Fixing permissions on $cgi....";
safe_chmod(0755,"${uid}","${cgi}");
print "Done\n";
}
}