diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-05-14 00:23:34 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-05-14 00:23:34 +0200 |
commit | 1b0a93edb93a93c30d7fbb35571f109ddf8a67a2 (patch) | |
tree | 73326fed28844ea23c13d4bbfe7abdd7b64bd270 | |
parent | 810b7161dcace56709038bf0cad93c925669c3b8 (diff) | |
download | busybox-w32-1b0a93edb93a93c30d7fbb35571f109ddf8a67a2.tar.gz busybox-w32-1b0a93edb93a93c30d7fbb35571f109ddf8a67a2.tar.bz2 busybox-w32-1b0a93edb93a93c30d7fbb35571f109ddf8a67a2.zip |
adduser/addgroup: make system id range configurable.
By Tito (farmatito AT tiscali.it).
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | loginutils/Config.in | 16 | ||||
-rw-r--r-- | loginutils/addgroup.c | 12 | ||||
-rw-r--r-- | loginutils/adduser.c | 12 |
3 files changed, 32 insertions, 8 deletions
diff --git a/loginutils/Config.in b/loginutils/Config.in index 9430bfa09..e11503665 100644 --- a/loginutils/Config.in +++ b/loginutils/Config.in | |||
@@ -152,6 +152,22 @@ config FEATURE_ADDUSER_LONG_OPTIONS | |||
152 | help | 152 | help |
153 | Support long options for the adduser applet. | 153 | Support long options for the adduser applet. |
154 | 154 | ||
155 | config FIRST_SYSTEM_ID | ||
156 | int "First valid system uid or gid for adduser and addgroup" | ||
157 | depends on ADDUSER || ADDGROUP | ||
158 | range 0 64900 | ||
159 | default 100 | ||
160 | help | ||
161 | First valid system uid or gid for adduser and addgroup | ||
162 | |||
163 | config LAST_SYSTEM_ID | ||
164 | int "Last valid system uid or gid for adduser and addgroup" | ||
165 | depends on ADDUSER || ADDGROUP | ||
166 | range 0 64900 | ||
167 | default 999 | ||
168 | help | ||
169 | Last valid system uid or gid for adduser and addgroup | ||
170 | |||
155 | config DELUSER | 171 | config DELUSER |
156 | bool "deluser" | 172 | bool "deluser" |
157 | default n | 173 | default n |
diff --git a/loginutils/addgroup.c b/loginutils/addgroup.c index cb839290d..dc60788e0 100644 --- a/loginutils/addgroup.c +++ b/loginutils/addgroup.c | |||
@@ -11,6 +11,10 @@ | |||
11 | */ | 11 | */ |
12 | #include "libbb.h" | 12 | #include "libbb.h" |
13 | 13 | ||
14 | #if CONFIG_LAST_SYSTEM_ID < CONFIG_FIRST_SYSTEM_ID | ||
15 | #error Bad LAST_SYSTEM_ID or FIRST_SYSTEM_ID in .config | ||
16 | #endif | ||
17 | |||
14 | #define OPT_GID (1 << 0) | 18 | #define OPT_GID (1 << 0) |
15 | #define OPT_SYSTEM_ACCOUNT (1 << 1) | 19 | #define OPT_SYSTEM_ACCOUNT (1 << 1) |
16 | 20 | ||
@@ -30,11 +34,11 @@ static void xgroup_study(struct group *g) | |||
30 | /* gid values is set to [0, INT_MAX] */ | 34 | /* gid values is set to [0, INT_MAX] */ |
31 | if (!(option_mask32 & OPT_GID)) { | 35 | if (!(option_mask32 & OPT_GID)) { |
32 | if (option_mask32 & OPT_SYSTEM_ACCOUNT) { | 36 | if (option_mask32 & OPT_SYSTEM_ACCOUNT) { |
33 | g->gr_gid = 100; /* FIRST_SYSTEM_GID */ | 37 | g->gr_gid = CONFIG_FIRST_SYSTEM_ID; |
34 | max = 999; /* LAST_SYSTEM_GID */ | 38 | max = CONFIG_LAST_SYSTEM_ID; |
35 | } else { | 39 | } else { |
36 | g->gr_gid = 1000; /* FIRST_GID */ | 40 | g->gr_gid = CONFIG_LAST_SYSTEM_ID + 1; |
37 | max = 64999; /* LAST_GID */ | 41 | max = 64999; |
38 | } | 42 | } |
39 | } | 43 | } |
40 | /* Check if the desired gid is free | 44 | /* Check if the desired gid is free |
diff --git a/loginutils/adduser.c b/loginutils/adduser.c index a399d9e4c..00232375b 100644 --- a/loginutils/adduser.c +++ b/loginutils/adduser.c | |||
@@ -9,6 +9,10 @@ | |||
9 | */ | 9 | */ |
10 | #include "libbb.h" | 10 | #include "libbb.h" |
11 | 11 | ||
12 | #if CONFIG_LAST_SYSTEM_ID < CONFIG_FIRST_SYSTEM_ID | ||
13 | #error Bad LAST_SYSTEM_ID or FIRST_SYSTEM_ID in .config | ||
14 | #endif | ||
15 | |||
12 | /* #define OPT_HOME (1 << 0) */ /* unused */ | 16 | /* #define OPT_HOME (1 << 0) */ /* unused */ |
13 | /* #define OPT_GECOS (1 << 1) */ /* unused */ | 17 | /* #define OPT_GECOS (1 << 1) */ /* unused */ |
14 | #define OPT_SHELL (1 << 2) | 18 | #define OPT_SHELL (1 << 2) |
@@ -32,11 +36,11 @@ static void passwd_study(struct passwd *p) | |||
32 | 36 | ||
33 | if (!(option_mask32 & OPT_UID)) { | 37 | if (!(option_mask32 & OPT_UID)) { |
34 | if (option_mask32 & OPT_SYSTEM_ACCOUNT) { | 38 | if (option_mask32 & OPT_SYSTEM_ACCOUNT) { |
35 | p->pw_uid = 100; /* FIRST_SYSTEM_UID */ | 39 | p->pw_uid = CONFIG_FIRST_SYSTEM_ID; |
36 | max = 999; /* LAST_SYSTEM_UID */ | 40 | max = CONFIG_LAST_SYSTEM_ID; |
37 | } else { | 41 | } else { |
38 | p->pw_uid = 1000; /* FIRST_UID */ | 42 | p->pw_uid = CONFIG_LAST_SYSTEM_ID + 1; |
39 | max = 64999; /* LAST_UID */ | 43 | max = 64999; |
40 | } | 44 | } |
41 | } | 45 | } |
42 | /* check for a free uid (and maybe gid) */ | 46 | /* check for a free uid (and maybe gid) */ |