[Pkg-shadow-devel] [PATCH] Allow deleting the group even if it is the primary group of a user
jesse
jesse at mbuki-mvuki.org
Fri Jun 12 22:32:50 UTC 2015
From: "Jesse W. Hathaway" <jesse at mbuki-mvuki.org>
This is helpful when using configuration management tools such as
Puppet, where you are managing the groups in a central location and you
don't need this safeguard.
diff --git a/src/groupdel.c b/src/groupdel.c
index da99347..d613a66 100644
--- a/src/groupdel.c
+++ b/src/groupdel.c
@@ -60,6 +60,7 @@ const char *Prog;
static char *group_name;
static gid_t group_id = -1;
+static bool check_group_busy = true;
#ifdef SHADOWGRP
static bool is_shadow_grp;
@@ -96,6 +97,7 @@ static /*@noreturn@*/void usage (int status)
Prog);
(void) fputs (_(" -h, --help display this help message and exit\n"), usageout);
(void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout);
+ (void) fputs (_(" -f, --force delete group even if it is the primary group of a user\n"), usageout);
(void) fputs ("\n", usageout);
exit (status);
}
@@ -321,7 +323,7 @@ static void process_flags (int argc, char **argv)
{NULL, 0, NULL, '\0'}
};
- while ((c = getopt_long (argc, argv, "hR:",
+ while ((c = getopt_long (argc, argv, "hfR:",
long_options, NULL)) != -1) {
switch (c) {
case 'h':
@@ -329,6 +331,9 @@ static void process_flags (int argc, char **argv)
/*@notreached@*/break;
case 'R': /* no-op, handled in process_root_flag () */
break;
+ case 'f':
+ check_group_busy = false;
+ break;
default:
usage (E_USAGE);
}
@@ -465,7 +470,9 @@ int main (int argc, char **argv)
/*
* Make sure this isn't the primary group of anyone.
*/
- group_busy (group_id);
+ if (check_group_busy) {
+ group_busy (group_id);
+ }
/*
* Do the hard stuff - open the files, delete the group entries,
More information about the Pkg-shadow-devel
mailing list