Deluser: deleting the home folder

Laszlo Papp lpapp at kde.org
Thu Jul 3 10:10:42 UTC 2014


commit 761fd153e340a14abccc0af89f2f6617faf2077f
Author: Laszlo Papp <lpapp at kde.org>
Date:   Thu Jul 3 11:06:58 2014 +0100

    Add optional home directory removal support to deluser

diff --git a/loginutils/deluser.c b/loginutils/deluser.c
index e39ac55..67b744b 100644
--- a/loginutils/deluser.c
+++ b/loginutils/deluser.c
@@ -11,9 +11,10 @@
  */

 //usage:#define deluser_trivial_usage
-//usage:       "USER"
+//usage:       "[-h] USER"
 //usage:#define deluser_full_usage "\n\n"
 //usage:       "Delete USER from the system"
+//usage:       "\n    -h   Remove the home directory"

 //usage:#define delgroup_trivial_usage
 //usage:       IF_FEATURE_DEL_USER_FROM_GROUP("[USER] ")"GROUP"
@@ -35,11 +36,15 @@ int deluser_main(int argc, char **argv)
        /* Name of shadow or gshadow file */
        const char *sfile;
        /* Are we deluser or delgroup? */
+    struct passwd *pw = 0;
        int do_deluser = (ENABLE_DELUSER && (!ENABLE_DELGROUP ||
applet_name[3] == 'u'));

        if (geteuid() != 0)
                bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);

+    int do_delhome = 0;
+    if (getopt32(argv, "h") & 1) { ++argv; --argc; do_delhome = 1; }
+
        name = argv[1];
        member = NULL;

@@ -55,7 +60,7 @@ int deluser_main(int argc, char **argv)
        case 2:
                if (do_deluser) {
                        /* "deluser USER" */
-                       xgetpwnam(name); /* bail out if USER is wrong */
+                       pw = xgetpwnam(name); /* bail out if USER is wrong
*/
                        pfile = bb_path_passwd_file;
                        if (ENABLE_FEATURE_SHADOWPASSWDS)
                                sfile = bb_path_shadow_file;
@@ -108,6 +113,8 @@ int deluser_main(int argc, char **argv)
                        do_deluser = -1;
                        goto do_delgroup;
                }
+        if (do_delhome && pw && remove_file(pw->pw_dir, FILEUTILS_RECUR) <
0)
+            bb_error_msg("can't remove home: %s", pw->pw_dir);
                return EXIT_SUCCESS;
        }
        /* Reached only if number of command line args is wrong */
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/busybox/attachments/20140703/ae88cfa6/attachment.html>


More information about the busybox mailing list