version 1.11, 2004/10/20 09:30:57
|
version 1.13, 2005/01/25 11:39:52
|
Line 69
|
Line 69
|
use strict; |
use strict; |
use Fcntl qw(:mode); |
use Fcntl qw(:mode); |
use DirHandle; |
use DirHandle; |
|
use POSIX; |
|
|
$ENV{'PATH'} = '/bin:/usr/bin:/usr/local/sbin:/home/httpd/perl'; |
$ENV{'PATH'} = '/bin:/usr/bin:/usr/local/sbin:/home/httpd/perl'; |
delete @ENV{qw{IFS CDPATH ENV BASH_ENV}}; |
delete @ENV{qw{IFS CDPATH ENV BASH_ENV}}; |
|
|
my $DEBUG = 0; # .nonzero -> Debug printing enabled. |
my $DEBUG = 1; # .nonzero -> Debug printing enabled. |
my $path_sep = "/"; # Unix like operating systems. |
my $path_sep = "/"; # Unix like operating systems. |
|
|
|
|
Line 214 END
|
Line 214 END
|
close OUT; |
close OUT; |
} |
} |
|
|
&System("/bin/chmod 02775 $fulldir"); |
&System("/bin/chmod 02770 $fulldir"); |
&System("/bin/chmod 0775 $fulldir"."/index.html"); |
&System("/bin/chmod 0770 $fulldir"."/index.html"); |
|
|
|
|
# Based on the authentiation mode, set the ownership of the directory. |
# Based on the authentiation mode, set the ownership of the directory. |
|
|
if($authentication eq "unix:") { # Unix mode authentication... |
if($authentication eq "unix:") { # Unix mode authentication... |
&System("/bin/chown -R $safeuser".":".$safeuser." ".$fulldir); |
&System("/bin/chown -R $safeuser:www"." ".$fulldir); |
&JoinGroup($safeuser); |
&JoinGroup($safeuser); |
} else { |
} else { |
# Internal, Kerberos, and Local authentication are for users |
# Internal, Kerberos, and Local authentication are for users |
Line 237 if($authentication eq "unix:") { # Unix
|
Line 237 if($authentication eq "unix:") { # Unix
|
# user's home directory that can reset ownerships and permissions |
# user's home directory that can reset ownerships and permissions |
# back the way the used to be. |
# back the way the used to be. |
|
|
&write_restore_script($homedir); |
# This can take long enough for lond to time out, so we'll do it |
|
# in a separate process that we'll not wait for. |
&System("/bin/chown -R root:root ".$homedir); |
# |
|
my $fpid = fork; |
|
if($fpid) { |
|
&DisableRoot; |
|
exit 0; |
|
} else { |
|
print "Forked\n"; |
|
POSIX::setsid(); # Disassociate from parent. |
|
print "Separate session\n"; |
|
&write_restore_script($homedir); |
|
print "Restore script written\n"; |
|
&System("/bin/chown -R root:root ".$homedir); |
|
&System("/bin/chown -R www:www ".$fulldir); |
|
print "Exiting\n"; |
|
exit 0; |
|
} |
|
} else { |
|
&System("/bin/chown -R www:www ".$fulldir); |
} |
} |
&System("/bin/chown -R www:www ".$fulldir); |
|
} |
} |
&DisableRoot; |
&DisableRoot; |
|
|