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