diff options
author | Rob Landley <rob@landley.net> | 2006-07-17 00:35:07 +0000 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2006-07-17 00:35:07 +0000 |
commit | f0623a2c98c02b07bc886171f147b522b0f66d94 (patch) | |
tree | 40b00a15b44a355de15bd069e3edf24e69d9cdfd | |
parent | 62103757efc2b22355a96bfd1298e1dbcb217f7f (diff) | |
download | busybox-w32-f0623a2c98c02b07bc886171f147b522b0f66d94.tar.gz busybox-w32-f0623a2c98c02b07bc886171f147b522b0f66d94.tar.bz2 busybox-w32-f0623a2c98c02b07bc886171f147b522b0f66d94.zip |
Patch from Thaddeus Ternes, adding chuid to start-stop-daemon.
-rw-r--r-- | debianutils/start_stop_daemon.c | 11 | ||||
-rw-r--r-- | include/usage.h | 3 |
2 files changed, 11 insertions, 3 deletions
diff --git a/debianutils/start_stop_daemon.c b/debianutils/start_stop_daemon.c index 3700506bf..733fb4112 100644 --- a/debianutils/start_stop_daemon.c +++ b/debianutils/start_stop_daemon.c | |||
@@ -24,6 +24,7 @@ static int signal_nr = 15; | |||
24 | static int user_id = -1; | 24 | static int user_id = -1; |
25 | static int quiet; | 25 | static int quiet; |
26 | static char *userspec = NULL; | 26 | static char *userspec = NULL; |
27 | static char *chuid = NULL; | ||
27 | static char *cmdname = NULL; | 28 | static char *cmdname = NULL; |
28 | static char *execname = NULL; | 29 | static char *execname = NULL; |
29 | static char *pidfile = NULL; | 30 | static char *pidfile = NULL; |
@@ -211,6 +212,7 @@ static const struct option ssd_long_options[] = { | |||
211 | { "name", 1, NULL, 'n' }, | 212 | { "name", 1, NULL, 'n' }, |
212 | { "signal", 1, NULL, 's' }, | 213 | { "signal", 1, NULL, 's' }, |
213 | { "user", 1, NULL, 'u' }, | 214 | { "user", 1, NULL, 'u' }, |
215 | { "chuid", 1, NULL, 'c' }, | ||
214 | { "exec", 1, NULL, 'x' }, | 216 | { "exec", 1, NULL, 'x' }, |
215 | { "pidfile", 1, NULL, 'p' }, | 217 | { "pidfile", 1, NULL, 'p' }, |
216 | #if ENABLE_FEATURE_START_STOP_DAEMON_FANCY | 218 | #if ENABLE_FEATURE_START_STOP_DAEMON_FANCY |
@@ -249,9 +251,9 @@ int start_stop_daemon_main(int argc, char **argv) | |||
249 | opt = bb_getopt_ulflags(argc, argv, "KSbqm" | 251 | opt = bb_getopt_ulflags(argc, argv, "KSbqm" |
250 | // USE_FEATURE_START_STOP_DAEMON_FANCY("ovR:") | 252 | // USE_FEATURE_START_STOP_DAEMON_FANCY("ovR:") |
251 | USE_FEATURE_START_STOP_DAEMON_FANCY("ov") | 253 | USE_FEATURE_START_STOP_DAEMON_FANCY("ov") |
252 | "a:n:s:u:x:p:" | 254 | "a:n:s:u:c:x:p:" |
253 | // USE_FEATURE_START_STOP_DAEMON_FANCY(,&retry_arg) | 255 | // USE_FEATURE_START_STOP_DAEMON_FANCY(,&retry_arg) |
254 | ,&startas, &cmdname, &signame, &userspec, &execname, &pidfile); | 256 | ,&startas, &cmdname, &signame, &userspec, &chuid, &execname, &pidfile); |
255 | 257 | ||
256 | quiet = (opt & SSD_OPT_QUIET) | 258 | quiet = (opt & SSD_OPT_QUIET) |
257 | USE_FEATURE_START_STOP_DAEMON_FANCY(&& !(opt & SSD_OPT_VERBOSE)); | 259 | USE_FEATURE_START_STOP_DAEMON_FANCY(&& !(opt & SSD_OPT_VERBOSE)); |
@@ -301,6 +303,11 @@ int start_stop_daemon_main(int argc, char **argv) | |||
301 | fprintf(pidf, "%d\n", pidt); | 303 | fprintf(pidf, "%d\n", pidt); |
302 | fclose(pidf); | 304 | fclose(pidf); |
303 | } | 305 | } |
306 | if(chuid) { | ||
307 | if(sscanf(chuid, "%d", &user_id) != 1) | ||
308 | user_id = bb_xgetpwnam(chuid); | ||
309 | setuid(user_id); | ||
310 | } | ||
304 | execv(startas, argv); | 311 | execv(startas, argv); |
305 | bb_perror_msg_and_die ("unable to start %s", startas); | 312 | bb_perror_msg_and_die ("unable to start %s", startas); |
306 | } | 313 | } |
diff --git a/include/usage.h b/include/usage.h index 7c63e2f85..e8d121c1e 100644 --- a/include/usage.h +++ b/include/usage.h | |||
@@ -2712,7 +2712,8 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \ | |||
2712 | "\n\t-o|--oknodo\t\t\texit status 0 if nothing done" \ | 2712 | "\n\t-o|--oknodo\t\t\texit status 0 if nothing done" \ |
2713 | "\n\t-v|--verbose\t\t\tbe verbose" \ | 2713 | "\n\t-v|--verbose\t\t\tbe verbose" \ |
2714 | ) \ | 2714 | ) \ |
2715 | "\n\t-s|--signal <signal>\t\tsignal to send (default TERM)" | 2715 | "\n\t-s|--signal <signal>\t\tsignal to send (default TERM)" \ |
2716 | "\n\t-U|--chuid <username>|<uid>\tstart process with this name" | ||
2716 | 2717 | ||
2717 | #ifdef CONFIG_FEATURE_STAT_FORMAT | 2718 | #ifdef CONFIG_FEATURE_STAT_FORMAT |
2718 | # define USAGE_STAT_FORMAT(a) a | 2719 | # define USAGE_STAT_FORMAT(a) a |