From e52742e6d35ae33e55e6fd7a0228e55ec63102d3 Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Wed, 3 Sep 2014 11:13:54 +0200 Subject: [PATCH] sysprep: user-account: remove the correct home Query using augeas for the home directory of an user, instead of hardcoding /home/. --- sysprep/sysprep_operation_user_account.ml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sysprep/sysprep_operation_user_account.ml b/sysprep/sysprep_operation_user_account.ml index 3d88ffc46..cdb0bfd76 100644 --- a/sysprep/sysprep_operation_user_account.ml +++ b/sysprep/sysprep_operation_user_account.ml @@ -84,6 +84,14 @@ let user_account_perform ~verbose ~quiet g root side_effects = String.sub userpath (i+1) (String.length userpath -i-1) in if uid >= uid_min && uid <= uid_max && check_remove_user username then ( + (* Get the home before removing the passwd entry. *) + let home_dir = + try Some (g#aug_get (userpath ^ "/home")) + with _ -> + if verbose then + warning ~prog (f_"Cannot get the home directory for %s") + username; + None in g#aug_rm userpath; (* XXX Augeas doesn't yet have a lens for /etc/shadow, so the * next line currently does nothing, but should start to @@ -91,7 +99,9 @@ let user_account_perform ~verbose ~quiet g root side_effects = *) g#aug_rm (sprintf "/files/etc/shadow/%s" username); g#aug_rm (sprintf "/files/etc/group/%s" username); - g#rm_rf ("/home/" ^ username) + match home_dir with + | None -> () + | Some dir -> g#rm_rf dir ) ) users; g#aug_save ();