summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilan Bouchet-Valat <nalimilan@club.fr>2010-02-15 11:54:20 +0100
committerMilan Bouchet-Valat <nalimilan@club.fr>2010-02-15 11:54:20 +0100
commit9fcf9b741fe206bdee9d5a37c1854754a385dcda (patch)
tree4cc99991e6d6b7defc6188d9866af7d6b49b762f
parent5bad3f88f5e28fd9c1b62e1da6ff062d520ccc61 (diff)
Fix chown home directory for new user
We need to update user settings before running chown: home dir may have been chosen by the platform tools.
-rw-r--r--Users/Users.pm11
1 files changed, 9 insertions, 2 deletions
diff --git a/Users/Users.pm b/Users/Users.pm
index 4f4cb68..8f81d67 100644
--- a/Users/Users.pm
+++ b/Users/Users.pm
@@ -594,8 +594,12 @@ sub add_user
}
}
- # ensure user owns its home dir if asked
$chown_home = $$user[$HOME_FLAGS] & (1 << 1);
+
+ # update user to get values that were filled
+ $user = &get_user ($$user[$LOGIN]);
+
+ # ensure user owns its home dir if asked
if ($chown_home && $$user[$HOME] ne "/")
{
@command = ("chown", "-R", "$$user[$LOGIN]:", $$user[$HOME]);
@@ -607,7 +611,7 @@ sub add_user
# Return the new user with default values filled.
# Returns NULL if user doesn't exist, which means failure.
- return &get_user ($$user[$LOGIN]);
+ return $user;
}
sub change_user
@@ -639,6 +643,9 @@ sub change_user
&change_user_chfn ($$new_user[$LOGIN], $$old_user[$COMMENT], $$new_user[$COMMENT]);
&set_passwd ($$new_user[$LOGIN], $$new_user[$PASSWD]);
+
+ # Erase password string to avoid it from staying in memory
+ $$new_user[$PASSWD] = '0' x length ($$new_user[$PASSWD]);
}
sub set_logindefs