Rainer Jung created DAEMON-437:
----------------------------------
Summary: prunsrv: Better not to redirect stdout/stderr during
service installation?
Key: DAEMON-437
URL: https://issues.apache.org/jira/browse/DAEMON-437
Project: Commons Daemon
Issue Type: Bug
Components: prunsrv
Affects Versions: 1.2.4
Reporter: Rainer Jung
{{I observed the following behavior when using prunsrv:}}
{{I call it with //IS//MyService and more arguments to install a Tomcat
service. Especially I use the default LocalSystem user as the user who will run
the installed service and the arguments:}}
{{ --StdOutput auto ^}}
{{ --StdError auto ^}}
{{to redirect stdout and stderr to the default files.}}
{{To install the service I use a user with Administrator privileges. Running
prunsrv to install the service now already creates the redirected stdout and
stderr files, but only writable by Administrator.}}
{{When I start the service after this service installation, it can not write to
the redirected stdout and stderr files, because it runs as a lower privileged
LocalSystem account.}}
{{Before calling redirectStdStreams() in apps/prunsrv/prunsrv.c, there is
already a special case if prunsrv was called with //TS (Run Service as console
application):}}
1692 /* In debug mode allways use console */
1693 if (lpCmdline->dwCmdIndex != 1) {
1694 gStdwrap.szStdOutFilename = SO_STDOUTPUT;
1695 gStdwrap.szStdErrFilename = SO_STDERROR;
1696 }
{{I wonder, whether it wouldn't be better to not set the redirection file names
for other dwCmdIndex values as well. Here's the list of indexes from the source
code:}}
{{ 76 L"RS", /* 2 Run Service */}}
{{ 77 L"ES", /* 3 Execute start */}}
{{ 78 L"SS", /* 4 Stop Service */}}
{{ 79 L"US", /* 5 Update Service parameters */}}
{{ 80 L"IS", /* 6 Install Service */}}
{{ 81 L"DS", /* 7 Delete Service */}}
{{ 82 L"?", /* 8 Help */}}
{{ 83 L"VS", /* 9 Version */}}
{{IMHO 5-9 are candidates, maybe 4 and 3 as well. At least for those I would
expect that they were executed on the console and stdout/stderr would also be
expected there. But I might not be aware of use cases with other needs.}}
{{The normal prunsrv log file does have the same permission problem. But since
it contains log info about what action had been done, I am not so sure, whether
one can simply write that to stdout instead. But maybe one could use a
different default file name line MyService.manage.2021-12-07.log instead of
MyService.2021-12-07.log for the above indexes. Not nice, but I don't have a
better idea yet. }}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)