provide all data for homedirs via arguments

This commit is contained in:
Roland Gruber 2010-08-30 20:04:21 +00:00
parent 2c3dcb48c2
commit 8464c96e06
2 changed files with 42 additions and 19 deletions

View File

@ -4,7 +4,7 @@
# #
# This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/) # This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
# Copyright (C) 2003 - 2006 Tilo Lutz # Copyright (C) 2003 - 2006 Tilo Lutz
# Copyright (C) 2006 - 2009 Roland Gruber # Copyright (C) 2006 - 2010 Roland Gruber
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -188,10 +188,10 @@ sub manageHomedirs {
# Creates the homedirectory of the user # Creates the homedirectory of the user
# #
sub createHomedir { sub createHomedir {
my $homedir = $user[7]; my $homedir = $vals[3];
if ($homedir eq '') { if ($homedir eq '') {
$return = "ERROR,Lamdaemon ($hostname),Unable to determine home directory path. Please check if NSS LDAP is correctly configured."; $return = "ERROR,Lamdaemon ($hostname),No home directory specified.";
logMessage(LOG_ERR, "Unable to determine home directory path. Please check if NSS LDAP is correctly configured."); logMessage(LOG_ERR, "No home directory specified.");
return; return;
} }
my $path = $homedir; my $path = $homedir;
@ -202,14 +202,14 @@ sub createHomedir {
system 'mkdir', '-m', '0755', '-p', $path; # Create paths to homedir system 'mkdir', '-m', '0755', '-p', $path; # Create paths to homedir
} }
if (! -e $homedir) { if (! -e $homedir) {
system 'mkdir', '-m', $vals[3], $homedir; # Create homedir itself system 'mkdir', '-m', $vals[4], $homedir; # Create homedir itself
system ("(cd /etc/skel && tar cf - .) | (cd $homedir && tar xmf -)"); # Copy /etc/sekl into homedir system ("(cd /etc/skel && tar cf - .) | (cd $homedir && tar xmf -)"); # Copy /etc/sekl into homedir
system 'chown', '-hR', "$user[2]:$user[3]" , $homedir; # Change owner to new user system 'chown', '-hR', "$vals[5]:$vals[6]" , $homedir; # Change owner to new user
if (-e '/usr/sbin/useradd.local') { if (-e '/usr/sbin/useradd.local') {
system '/usr/sbin/useradd.local', $user[0]; # run useradd-script system '/usr/sbin/useradd.local', $vals[0]; # run useradd-script
system 'chmod', '-R', $vals[3], $homedir; # Edit chmod rights system 'chmod', '-R', $vals[4], $homedir; # Edit chmod rights
} }
system 'chmod', $vals[3], $homedir; # Edit chmod rights system 'chmod', $vals[4], $homedir; # Edit chmod rights
$return = "INFO,Lamdaemon ($hostname),Home directory created (" . $homedir . ")."; $return = "INFO,Lamdaemon ($hostname),Home directory created (" . $homedir . ").";
logMessage(LOG_INFO, "Home directory created (" . $homedir . ")"); logMessage(LOG_INFO, "Home directory created (" . $homedir . ")");
} }
@ -224,24 +224,24 @@ sub createHomedir {
# Removes the homedirectory of the user # Removes the homedirectory of the user
# #
sub removeHomedir { sub removeHomedir {
if ($user[7] eq '') { if ($vals[3] eq '') {
$return = "ERROR,Lamdaemon ($hostname),Home directory path is empty."; $return = "ERROR,Lamdaemon ($hostname),Home directory path is empty.";
logMessage(LOG_ERR, "Home directory path is empty."); logMessage(LOG_ERR, "Home directory path is empty.");
return; return;
} }
($<, $>) = ($>, $<); # Get root previliges ($<, $>) = ($>, $<); # Get root previliges
if (-d $user[7] && $user[7] ne '/') { if (-d $vals[3] && $vals[3] ne '/') {
if ((stat($user[7]))[4] eq $user[2]) { if ((stat($vals[3]))[4] eq $vals[4]) {
system 'rm', '-R', $user[7]; # Delete Homedirectory system 'rm', '-R', $vals[3]; # Delete Homedirectory
if (-e '/usr/sbin/userdel.local') { if (-e '/usr/sbin/userdel.local') {
system '/usr/sbin/userdel.local', $user[0]; system '/usr/sbin/userdel.local', $vals[0];
} }
$return = "Ok"; $return = "Ok";
logMessage(LOG_INFO, "Home directory removed (" . $user[7] . ")"); logMessage(LOG_INFO, "Home directory removed (" . $vals[3] . ")");
} }
else { else {
$return = "ERROR,Lamdaemon ($hostname),Home directory not owned by $user[2]."; $return = "ERROR,Lamdaemon ($hostname),Home directory not owned by $vals[3].";
logMessage(LOG_ERR, "Home directory owned by wrong user (" . $user[7] . ")"); logMessage(LOG_ERR, "Home directory owned by wrong user (" . $vals[3] . ")");
} }
} }
else { else {

View File

@ -569,7 +569,19 @@ class posixAccount extends baseModule implements passwordService {
break; break;
} }
} }
$result = lamdaemon(implode(posixAccount::$SPLIT_DELIMITER, array($this->attributes['uid'][0], "home", "add", "0".$_SESSION['config']->get_scriptRights())), $server); $result = lamdaemon(
implode(
posixAccount::$SPLIT_DELIMITER,
array(
$this->attributes['uid'][0],
"home",
"add",
$this->attributes['homeDirectory'][0],
"0".$_SESSION['config']->get_scriptRights(),
$this->attributes['uidNumber'][0],
$this->attributes['gidNumber'][0])
),
$server);
// lamdaemon results // lamdaemon results
if (is_array($result)) { if (is_array($result)) {
$singleresult = explode(",", $result[0]); $singleresult = explode(",", $result[0]);
@ -617,7 +629,18 @@ class posixAccount extends baseModule implements passwordService {
} }
// try to delete directory on all servers // try to delete directory on all servers
for ($i = 0; $i < sizeof($lamdaemonServers); $i++) { for ($i = 0; $i < sizeof($lamdaemonServers); $i++) {
$result = lamdaemon(implode(posixAccount::$SPLIT_DELIMITER, array($this->attributes['uid'][0], "home", "rem")), $lamdaemonServers[$i]); $result = lamdaemon(
implode(
posixAccount::$SPLIT_DELIMITER,
array(
$this->attributes['uid'][0],
"home",
"rem",
$this->attributes['homeDirectory'][0],
$this->attributes['uidNumber'][0]
)
),
$lamdaemonServers[$i]);
// lamdaemon results // lamdaemon results
if (is_array($result)) { if (is_array($result)) {
foreach ($result as $singleresult) { foreach ($result as $singleresult) {