deluser: make it simpler, fix inability to delete user from group
Also makes menuconfig order more sensible Signed-off-by: Harald Becker <ralda@gmx.de> Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
This commit is contained in:
parent
0e13b4019c
commit
361b1a6884
@ -93,6 +93,47 @@ config USE_BB_CRYPT_SHA
|
||||
With this option off, login will fail password check for any
|
||||
user which has password encrypted with these algorithms.
|
||||
|
||||
config ADDUSER
|
||||
bool "adduser"
|
||||
default y
|
||||
help
|
||||
Utility for creating a new user account.
|
||||
|
||||
config FEATURE_ADDUSER_LONG_OPTIONS
|
||||
bool "Enable long options"
|
||||
default y
|
||||
depends on ADDUSER && LONG_OPTS
|
||||
help
|
||||
Support long options for the adduser applet.
|
||||
|
||||
config FEATURE_CHECK_NAMES
|
||||
bool "Enable sanity check on user/group names in adduser and addgroup"
|
||||
default n
|
||||
depends on ADDUSER || ADDGROUP
|
||||
help
|
||||
Enable sanity check on user and group names in adduser and addgroup.
|
||||
To avoid problems, the user or group name should consist only of
|
||||
letters, digits, underscores, periods, at signs and dashes,
|
||||
and not start with a dash (as defined by IEEE Std 1003.1-2001).
|
||||
For compatibility with Samba machine accounts "$" is also supported
|
||||
at the end of the user or group name.
|
||||
|
||||
config FIRST_SYSTEM_ID
|
||||
int "First valid system uid or gid for adduser and addgroup"
|
||||
depends on ADDUSER || ADDGROUP
|
||||
range 0 64900
|
||||
default 100
|
||||
help
|
||||
First valid system uid or gid for adduser and addgroup
|
||||
|
||||
config LAST_SYSTEM_ID
|
||||
int "Last valid system uid or gid for adduser and addgroup"
|
||||
depends on ADDUSER || ADDGROUP
|
||||
range 0 64900
|
||||
default 999
|
||||
help
|
||||
Last valid system uid or gid for adduser and addgroup
|
||||
|
||||
config ADDGROUP
|
||||
bool "addgroup"
|
||||
default y
|
||||
@ -115,6 +156,12 @@ config FEATURE_ADDUSER_TO_GROUP
|
||||
addgroup will add an existing user to an
|
||||
existing group.
|
||||
|
||||
config DELUSER
|
||||
bool "deluser"
|
||||
default y
|
||||
help
|
||||
Utility for deleting a user account.
|
||||
|
||||
config DELGROUP
|
||||
bool "delgroup"
|
||||
default y
|
||||
@ -129,53 +176,6 @@ config FEATURE_DEL_USER_FROM_GROUP
|
||||
If called with two non-option arguments, deluser
|
||||
or delgroup will remove an user from a specified group.
|
||||
|
||||
config FEATURE_CHECK_NAMES
|
||||
bool "Enable sanity check on user/group names in adduser and addgroup"
|
||||
default n
|
||||
depends on ADDUSER || ADDGROUP
|
||||
help
|
||||
Enable sanity check on user and group names in adduser and addgroup.
|
||||
To avoid problems, the user or group name should consist only of
|
||||
letters, digits, underscores, periods, at signs and dashes,
|
||||
and not start with a dash (as defined by IEEE Std 1003.1-2001).
|
||||
For compatibility with Samba machine accounts "$" is also supported
|
||||
at the end of the user or group name.
|
||||
|
||||
config ADDUSER
|
||||
bool "adduser"
|
||||
default y
|
||||
help
|
||||
Utility for creating a new user account.
|
||||
|
||||
config FEATURE_ADDUSER_LONG_OPTIONS
|
||||
bool "Enable long options"
|
||||
default y
|
||||
depends on ADDUSER && LONG_OPTS
|
||||
help
|
||||
Support long options for the adduser applet.
|
||||
|
||||
config FIRST_SYSTEM_ID
|
||||
int "First valid system uid or gid for adduser and addgroup"
|
||||
depends on ADDUSER || ADDGROUP
|
||||
range 0 64900
|
||||
default 100
|
||||
help
|
||||
First valid system uid or gid for adduser and addgroup
|
||||
|
||||
config LAST_SYSTEM_ID
|
||||
int "Last valid system uid or gid for adduser and addgroup"
|
||||
depends on ADDUSER || ADDGROUP
|
||||
range 0 64900
|
||||
default 999
|
||||
help
|
||||
Last valid system uid or gid for adduser and addgroup
|
||||
|
||||
config DELUSER
|
||||
bool "deluser"
|
||||
default y
|
||||
help
|
||||
Utility for deleting a user account.
|
||||
|
||||
config GETTY
|
||||
bool "getty"
|
||||
default y
|
||||
|
@ -6,25 +6,18 @@
|
||||
* Copyright (C) 1999,2000,2001 by John Beppu <beppu@codepoet.org>
|
||||
* Copyright (C) 2007 by Tito Ragusa <farmatito@tiscali.it>
|
||||
*
|
||||
* Licensed under GPLv2, see file LICENSE in this source tree.
|
||||
* Licensed under GPL version 2, see file LICENSE in this tarball for details.
|
||||
*
|
||||
*/
|
||||
#include "libbb.h"
|
||||
|
||||
static int del_line_matching(char **args, const char *filename)
|
||||
{
|
||||
if (ENABLE_FEATURE_DEL_USER_FROM_GROUP && args[2]) {
|
||||
return update_passwd(filename, args[2], NULL, args[1]);
|
||||
}
|
||||
return update_passwd(filename, args[1], NULL, NULL);
|
||||
}
|
||||
|
||||
int deluser_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||
int deluser_main(int argc, char **argv)
|
||||
{
|
||||
if (argc != 2
|
||||
&& (!ENABLE_FEATURE_DEL_USER_FROM_GROUP
|
||||
|| (applet_name[3] != 'g' || argc != 3))
|
||||
|| applet_name[3] != 'g'
|
||||
|| argc != 3)
|
||||
) {
|
||||
bb_show_usage();
|
||||
}
|
||||
@ -32,25 +25,30 @@ int deluser_main(int argc, char **argv)
|
||||
if (geteuid())
|
||||
bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
|
||||
|
||||
if ((ENABLE_FEATURE_DEL_USER_FROM_GROUP && argc != 3)
|
||||
|| ENABLE_DELUSER
|
||||
|| (ENABLE_DELGROUP && ENABLE_DESKTOP)
|
||||
) {
|
||||
if (ENABLE_DELUSER
|
||||
&& (!ENABLE_DELGROUP || applet_name[3] == 'u')
|
||||
) {
|
||||
if (del_line_matching(argv, bb_path_passwd_file) < 0)
|
||||
if (ENABLE_DELUSER && applet_name[3] == 'u') {
|
||||
/* deluser USER */
|
||||
if (update_passwd(bb_path_passwd_file, argv[1], NULL, NULL) < 0)
|
||||
return EXIT_FAILURE;
|
||||
if (ENABLE_FEATURE_SHADOWPASSWDS)
|
||||
if (update_passwd(bb_path_shadow_file, argv[1], NULL, NULL) < 0)
|
||||
return EXIT_FAILURE;
|
||||
if (ENABLE_FEATURE_SHADOWPASSWDS) {
|
||||
del_line_matching(argv, bb_path_shadow_file);
|
||||
}
|
||||
} else if (ENABLE_DESKTOP && ENABLE_DELGROUP && getpwnam(argv[1]))
|
||||
bb_error_msg_and_die("can't remove primary group of user %s", argv[1]);
|
||||
}
|
||||
if (del_line_matching(argv, bb_path_group_file) < 0)
|
||||
return EXIT_FAILURE;
|
||||
if (ENABLE_FEATURE_SHADOWPASSWDS) {
|
||||
del_line_matching(argv, bb_path_gshadow_file);
|
||||
} else if (ENABLE_DELGROUP) {
|
||||
/* delgroup ... */
|
||||
if (!ENABLE_FEATURE_DEL_USER_FROM_GROUP || argc != 3) {
|
||||
/* delgroup GROUP */
|
||||
if (update_passwd(bb_path_group_file, argv[1], NULL, NULL) < 0)
|
||||
return EXIT_FAILURE;
|
||||
if (ENABLE_FEATURE_SHADOWPASSWDS)
|
||||
if (update_passwd(bb_path_gshadow_file, argv[1], NULL, NULL) < 0)
|
||||
return EXIT_FAILURE;
|
||||
} else {
|
||||
/* delgroup USER GROUP */
|
||||
if (update_passwd(bb_path_group_file, argv[2], NULL, argv[1]) < 0)
|
||||
return EXIT_FAILURE;
|
||||
if (ENABLE_FEATURE_SHADOWPASSWDS)
|
||||
if (update_passwd(bb_path_gshadow_file, argv[2], NULL, argv[1]) < 0)
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user