O erro que você está recebendo é uma limitação da maneira como groupdel foi escrito e o fato de que o sistema é projetado em torno de números (IDs) e não nomes. Como você pode ver em código-fonte do groupdel , ele verifica apenas se há um usuário com o GID que você deseja excluir, como seu grupo principal. Não importa se há outro grupo com o mesmo ID, mas nomeado de forma diferente.
/* [ Note: I changed the style of the source code for brevity purposes. ]
* group_busy - check if this is any user's primary group
*
* group_busy verifies that this group is not the primary group
* for any user. You must remove all users before you remove
* the group.
*/
static void group_busy (gid_t gid)
{
struct passwd *pwd;
/* Nice slow linear search. */
setpwent ();
while ( ((pwd = getpwent ()) != NULL) && (pwd->pw_gid != gid) )
;
endpwent ();
/* If pwd isn't NULL, it stopped because the gid's matched. */
if (pwd == (struct passwd *) 0)
return;
/* Can't remove the group. */
fprintf (stderr,
_("%s: cannot remove the primary group of user '%s'\n"),
Prog, pwd->pw_name);
exit (E_GROUP_BUSY);
}
Você pode mexer nos arquivos de configuração usando outras ferramentas como o Perl na resposta do mtm ou alterar temporariamente o GID desse usuário para que group_busy
não falhe mais.