version 1.10, 2004/10/19 11:11:34
|
version 1.11, 2004/10/20 09:30:57
|
Line 232 if($authentication eq "unix:") { # Unix
|
Line 232 if($authentication eq "unix:") { # Unix
|
# is that a file system user is being demoted to internal user... |
# is that a file system user is being demoted to internal user... |
|
|
if($authentication eq "internal:") { |
if($authentication eq "internal:") { |
|
# In case the user was a unix/filesystem authenticated user, |
|
# we'll take a bit of time here to write a script in the |
|
# user's home directory that can reset ownerships and permissions |
|
# back the way the used to be. |
|
|
|
&write_restore_script($homedir); |
|
|
&System("/bin/chown -R root:root ".$homedir); |
&System("/bin/chown -R root:root ".$homedir); |
} |
} |
&System("/bin/chown -R www:www ".$fulldir); |
&System("/bin/chown -R www:www ".$fulldir); |
Line 371 sub process_tree {
|
Line 378 sub process_tree {
|
|
|
} |
} |
# |
# |
# Simple test of process_tree: |
# Callback from process_tree to write the script lines |
|
# requried to restore files to current ownership and permission. |
|
# Parameters: |
|
# dir - Name of the directory the file lives in. |
|
# name - Name of the file itself. |
|
# statinfo - Array from lstat called on the file. |
|
# |
# |
# |
sub write_script { |
sub write_script { |
my ($dir, $name, $statinfo) = @_; |
my ($dir, $name, $statinfo) = @_; |
Line 392 sub write_script {
|
Line 405 sub write_script {
|
|
|
|
|
} |
} |
|
# |
|
# Write a script in the user's home directory that can restore |
|
# the permissions and ownerhips of all the files in the directory |
|
# tree to their current ownerships and permissions. This is done |
|
# prior to making the user into an internally authenticated user |
|
# in case they were previously file system authenticated and |
|
# need to go back. |
|
# The file we will create will be of the form |
|
# restore_n.sh Where n is a number that we will keep |
|
# incrementing as needed until there isn't a file by that name. |
|
# |
|
# Parameters: |
|
# dir - Path to the user's home directory. |
|
# |
|
sub write_restore_script { |
|
my ($dir) = @_; |
|
|
|
# Create a unique file: |
|
|
|
my $version_number = 0; |
|
my $filename = 'restore_'.$version_number.'.sh'; |
|
my $full_name = $dir.$path_sep.$filename; |
|
|
|
while(-e $full_name) { |
|
$version_number++; |
|
$filename = 'restore_'.$version_number.'.sh'; |
|
$full_name = $dir.$path_sep.$filename; |
|
} |
|
# $full_name is the full path of a file that does not yet exist |
|
# of the form we want: |
|
|
|
open(CHMODSCRIPT, "> $full_name"); |
|
|
|
&process_tree(\&write_script, $dir); |
|
|
|
close(CHMODSCRIPT); |
|
|
|
chmod(0750, $full_name); |
|
|
|
} |
|
|
|
|
|
|