Patch from Thaddeus Ternes, adding chuid to start-stop-daemon.
This commit is contained in:
parent
62103757ef
commit
f0623a2c98
@ -24,6 +24,7 @@ static int signal_nr = 15;
|
|||||||
static int user_id = -1;
|
static int user_id = -1;
|
||||||
static int quiet;
|
static int quiet;
|
||||||
static char *userspec = NULL;
|
static char *userspec = NULL;
|
||||||
|
static char *chuid = NULL;
|
||||||
static char *cmdname = NULL;
|
static char *cmdname = NULL;
|
||||||
static char *execname = NULL;
|
static char *execname = NULL;
|
||||||
static char *pidfile = NULL;
|
static char *pidfile = NULL;
|
||||||
@ -211,6 +212,7 @@ static const struct option ssd_long_options[] = {
|
|||||||
{ "name", 1, NULL, 'n' },
|
{ "name", 1, NULL, 'n' },
|
||||||
{ "signal", 1, NULL, 's' },
|
{ "signal", 1, NULL, 's' },
|
||||||
{ "user", 1, NULL, 'u' },
|
{ "user", 1, NULL, 'u' },
|
||||||
|
{ "chuid", 1, NULL, 'c' },
|
||||||
{ "exec", 1, NULL, 'x' },
|
{ "exec", 1, NULL, 'x' },
|
||||||
{ "pidfile", 1, NULL, 'p' },
|
{ "pidfile", 1, NULL, 'p' },
|
||||||
#if ENABLE_FEATURE_START_STOP_DAEMON_FANCY
|
#if ENABLE_FEATURE_START_STOP_DAEMON_FANCY
|
||||||
@ -249,9 +251,9 @@ int start_stop_daemon_main(int argc, char **argv)
|
|||||||
opt = bb_getopt_ulflags(argc, argv, "KSbqm"
|
opt = bb_getopt_ulflags(argc, argv, "KSbqm"
|
||||||
// USE_FEATURE_START_STOP_DAEMON_FANCY("ovR:")
|
// USE_FEATURE_START_STOP_DAEMON_FANCY("ovR:")
|
||||||
USE_FEATURE_START_STOP_DAEMON_FANCY("ov")
|
USE_FEATURE_START_STOP_DAEMON_FANCY("ov")
|
||||||
"a:n:s:u:x:p:"
|
"a:n:s:u:c:x:p:"
|
||||||
// USE_FEATURE_START_STOP_DAEMON_FANCY(,&retry_arg)
|
// USE_FEATURE_START_STOP_DAEMON_FANCY(,&retry_arg)
|
||||||
,&startas, &cmdname, &signame, &userspec, &execname, &pidfile);
|
,&startas, &cmdname, &signame, &userspec, &chuid, &execname, &pidfile);
|
||||||
|
|
||||||
quiet = (opt & SSD_OPT_QUIET)
|
quiet = (opt & SSD_OPT_QUIET)
|
||||||
USE_FEATURE_START_STOP_DAEMON_FANCY(&& !(opt & SSD_OPT_VERBOSE));
|
USE_FEATURE_START_STOP_DAEMON_FANCY(&& !(opt & SSD_OPT_VERBOSE));
|
||||||
@ -301,6 +303,11 @@ int start_stop_daemon_main(int argc, char **argv)
|
|||||||
fprintf(pidf, "%d\n", pidt);
|
fprintf(pidf, "%d\n", pidt);
|
||||||
fclose(pidf);
|
fclose(pidf);
|
||||||
}
|
}
|
||||||
|
if(chuid) {
|
||||||
|
if(sscanf(chuid, "%d", &user_id) != 1)
|
||||||
|
user_id = bb_xgetpwnam(chuid);
|
||||||
|
setuid(user_id);
|
||||||
|
}
|
||||||
execv(startas, argv);
|
execv(startas, argv);
|
||||||
bb_perror_msg_and_die ("unable to start %s", startas);
|
bb_perror_msg_and_die ("unable to start %s", startas);
|
||||||
}
|
}
|
||||||
|
@ -2712,7 +2712,8 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \
|
|||||||
"\n\t-o|--oknodo\t\t\texit status 0 if nothing done" \
|
"\n\t-o|--oknodo\t\t\texit status 0 if nothing done" \
|
||||||
"\n\t-v|--verbose\t\t\tbe verbose" \
|
"\n\t-v|--verbose\t\t\tbe verbose" \
|
||||||
) \
|
) \
|
||||||
"\n\t-s|--signal <signal>\t\tsignal to send (default TERM)"
|
"\n\t-s|--signal <signal>\t\tsignal to send (default TERM)" \
|
||||||
|
"\n\t-U|--chuid <username>|<uid>\tstart process with this name"
|
||||||
|
|
||||||
#ifdef CONFIG_FEATURE_STAT_FORMAT
|
#ifdef CONFIG_FEATURE_STAT_FORMAT
|
||||||
# define USAGE_STAT_FORMAT(a) a
|
# define USAGE_STAT_FORMAT(a) a
|
||||||
|
Loading…
Reference in New Issue
Block a user