Contents of /tags/mkinitrd-6_2_1/busybox/loginutils/deluser.c
Parent Directory | Revision Log
Revision 999 -
(show annotations)
(download)
Sun May 30 12:16:23 2010 UTC (14 years, 4 months ago) by niro
File MIME type: text/plain
File size: 1627 byte(s)
Sun May 30 12:16:23 2010 UTC (14 years, 4 months ago) by niro
File MIME type: text/plain
File size: 1627 byte(s)
tagged 'mkinitrd-6_2_1'
1 | /* vi: set sw=4 ts=4: */ |
2 | /* |
3 | * deluser/delgroup implementation for busybox |
4 | * |
5 | * Copyright (C) 1999 by Lineo, inc. and John Beppu |
6 | * Copyright (C) 1999,2000,2001 by John Beppu <beppu@codepoet.org> |
7 | * Copyright (C) 2007 by Tito Ragusa <farmatito@tiscali.it> |
8 | * |
9 | * Licensed under GPL version 2, see file LICENSE in this tarball for details. |
10 | * |
11 | */ |
12 | #include "libbb.h" |
13 | |
14 | static int del_line_matching(char **args, const char *filename) |
15 | { |
16 | if (ENABLE_FEATURE_DEL_USER_FROM_GROUP && args[2]) { |
17 | return update_passwd(filename, args[2], NULL, args[1]); |
18 | } |
19 | return update_passwd(filename, args[1], NULL, NULL); |
20 | } |
21 | |
22 | int deluser_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
23 | int deluser_main(int argc, char **argv) |
24 | { |
25 | if (argc != 2 |
26 | && (!ENABLE_FEATURE_DEL_USER_FROM_GROUP |
27 | || (applet_name[3] != 'g' || argc != 3)) |
28 | ) { |
29 | bb_show_usage(); |
30 | } |
31 | |
32 | if (geteuid()) |
33 | bb_error_msg_and_die(bb_msg_perm_denied_are_you_root); |
34 | |
35 | if ((ENABLE_FEATURE_DEL_USER_FROM_GROUP && argc != 3) |
36 | || ENABLE_DELUSER |
37 | || (ENABLE_DELGROUP && ENABLE_DESKTOP) |
38 | ) { |
39 | if (ENABLE_DELUSER |
40 | && (!ENABLE_DELGROUP || applet_name[3] == 'u') |
41 | ) { |
42 | if (del_line_matching(argv, bb_path_passwd_file) < 0) |
43 | return EXIT_FAILURE; |
44 | if (ENABLE_FEATURE_SHADOWPASSWDS) { |
45 | del_line_matching(argv, bb_path_shadow_file); |
46 | } |
47 | } else if (ENABLE_DESKTOP && ENABLE_DELGROUP && getpwnam(argv[1])) |
48 | bb_error_msg_and_die("can't remove primary group of user %s", argv[1]); |
49 | } |
50 | if (del_line_matching(argv, bb_path_group_file) < 0) |
51 | return EXIT_FAILURE; |
52 | if (ENABLE_FEATURE_SHADOWPASSWDS) { |
53 | del_line_matching(argv, bb_path_gshadow_file); |
54 | } |
55 | return EXIT_SUCCESS; |
56 | } |