Skip to content

Commit d12806f

Browse files
committed
fix: respect '+' prefix (nouser) in all Exec* commands
1 parent a14d0cd commit d12806f

2 files changed

Lines changed: 36 additions & 36 deletions

File tree

files/docker/systemctl.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2991,9 +2991,9 @@ def do_start_service_from(self, conf):
29912991
exe, newcmd = self.exec_newcmd(cmd, env, conf)
29922992
logg.info(" pre-start %s", shell_cmd(newcmd))
29932993
forkpid = os.fork()
2994-
if not forkpid:
2994+
if not forkpid:
29952995
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
2996-
runAsRoot = permissionsStartOnly
2996+
runAsRoot = permissionsStartOnly or exe.nouser
29972997
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
29982998
run = subprocess_waitpid(forkpid)
29992999
logg.debug(" pre-start done (%s) <-%s>",
@@ -3016,7 +3016,7 @@ def do_start_service_from(self, conf):
30163016
forkpid = os.fork()
30173017
if not forkpid: # pragma: no cover
30183018
os.setsid() # detach child process from parent
3019-
self.execve_from(conf, newcmd, env)
3019+
self.execve_from(conf, newcmd, env, exe.nouser)
30203020
run = subprocess_waitpid(forkpid)
30213021
if run.returncode and exe.check:
30223022
returncode = run.returncode
@@ -3050,7 +3050,7 @@ def do_start_service_from(self, conf):
30503050
forkpid = os.fork()
30513051
if not forkpid: # pragma: no cover
30523052
os.setsid() # detach child process from parent
3053-
self.execve_from(conf, newcmd, env)
3053+
self.execve_from(conf, newcmd, env, exe.nouser)
30543054
self.write_status_from(conf, MainPID=forkpid)
30553055
logg.info("%s started PID %s", runs, forkpid)
30563056
env["MAINPID"] = strE(forkpid)
@@ -3093,7 +3093,7 @@ def do_start_service_from(self, conf):
30933093
forkpid = os.fork()
30943094
if not forkpid: # pragma: no cover
30953095
os.setsid() # detach child process from parent
3096-
self.execve_from(conf, newcmd, env)
3096+
self.execve_from(conf, newcmd, env, exe.nouser)
30973097
# via NOTIFY # self.write_status_from(conf, MainPID=forkpid)
30983098
logg.info("%s started PID %s", runs, forkpid)
30993099
mainpid = forkpid
@@ -3135,7 +3135,7 @@ def do_start_service_from(self, conf):
31353135
forkpid = os.fork()
31363136
if not forkpid: # pragma: no cover
31373137
os.setsid() # detach child process from parent
3138-
self.execve_from(conf, newcmd, env)
3138+
self.execve_from(conf, newcmd, env, exe.nouser)
31393139
logg.info("%s started PID %s", runs, forkpid)
31403140
run = subprocess_waitpid(forkpid)
31413141
if run.returncode and exe.check:
@@ -3170,7 +3170,7 @@ def do_start_service_from(self, conf):
31703170
forkpid = os.fork()
31713171
if not forkpid:
31723172
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
3173-
runAsRoot = permissionsStartOnly
3173+
runAsRoot = permissionsStartOnly or exe.nouser
31743174
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
31753175
run = subprocess_waitpid(forkpid)
31763176
logg.debug("post-fail done (%s) <-%s>",
@@ -3185,7 +3185,7 @@ def do_start_service_from(self, conf):
31853185
forkpid = os.fork()
31863186
if not forkpid:
31873187
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
3188-
runAsRoot = permissionsStartOnly
3188+
runAsRoot = permissionsStartOnly or exe.nouser
31893189
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
31903190
run = subprocess_waitpid(forkpid)
31913191
logg.debug("post-start done (%s) <-%s>",
@@ -3294,9 +3294,9 @@ def do_start_socket_from(self, conf):
32943294
exe, newcmd = self.exec_newcmd(cmd, env, conf)
32953295
logg.info(" pre-start %s", shell_cmd(newcmd))
32963296
forkpid = os.fork()
3297-
if not forkpid:
3297+
if not forkpid:
32983298
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
3299-
runAsRoot = permissionsStartOnly
3299+
runAsRoot = permissionsStartOnly or exe.nouser
33003300
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
33013301
run = subprocess_waitpid(forkpid)
33023302
logg.debug(" pre-start done (%s) <-%s>",
@@ -3338,7 +3338,7 @@ def do_start_socket_from(self, conf):
33383338
forkpid = os.fork()
33393339
if not forkpid:
33403340
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
3341-
runAsRoot = permissionsStartOnly
3341+
runAsRoot = permissionsStartOnly or exe.nouser
33423342
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
33433343
run = subprocess_waitpid(forkpid)
33443344
logg.debug("post-fail done (%s) <-%s>",
@@ -3351,7 +3351,7 @@ def do_start_socket_from(self, conf):
33513351
forkpid = os.fork()
33523352
if not forkpid:
33533353
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
3354-
runAsRoot = permissionsStartOnly
3354+
runAsRoot = permissionsStartOnly or exe.nouser
33553355
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
33563356
run = subprocess_waitpid(forkpid)
33573357
logg.debug("post-start done (%s) <-%s>",
@@ -3696,7 +3696,7 @@ def do_stop_service_from(self, conf):
36963696
logg.info("%s stop %s", runs, shell_cmd(newcmd))
36973697
forkpid = os.fork()
36983698
if not forkpid:
3699-
self.execve_from(conf, newcmd, env) # pragma: no cover
3699+
self.execve_from(conf, newcmd, env, exe.nouser) # pragma: no cover
37003700
run = subprocess_waitpid(forkpid)
37013701
if run.returncode and exe.check:
37023702
returncode = run.returncode
@@ -3726,7 +3726,7 @@ def do_stop_service_from(self, conf):
37263726
logg.info("%s stop %s", runs, shell_cmd(newcmd))
37273727
forkpid = os.fork()
37283728
if not forkpid:
3729-
self.execve_from(conf, newcmd, env) # pragma: no cover
3729+
self.execve_from(conf, newcmd, env, exe.nouser) # pragma: no cover
37303730
run = subprocess_waitpid(forkpid)
37313731
run = must_have_failed(run, newcmd) # TODO: a workaround
37323732
# self.write_status_from(conf, MainPID=run.pid) # no ExecStop
@@ -3759,7 +3759,7 @@ def do_stop_service_from(self, conf):
37593759
logg.info("fork stop %s", shell_cmd(newcmd))
37603760
forkpid = os.fork()
37613761
if not forkpid:
3762-
self.execve_from(conf, newcmd, env) # pragma: no cover
3762+
self.execve_from(conf, newcmd, env, exe.nouser) # pragma: no cover
37633763
run = subprocess_waitpid(forkpid)
37643764
if run.returncode and exe.check:
37653765
returncode = run.returncode
@@ -3793,7 +3793,7 @@ def do_stop_service_from(self, conf):
37933793
forkpid = os.fork()
37943794
if not forkpid:
37953795
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
3796-
runAsRoot = permissionsStartOnly
3796+
runAsRoot = permissionsStartOnly or exe.nouser
37973797
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
37983798
run = subprocess_waitpid(forkpid)
37993799
logg.debug("post-stop done (%s) <-%s>",
@@ -3833,7 +3833,7 @@ def do_stop_socket_from(self, conf):
38333833
forkpid = os.fork()
38343834
if not forkpid:
38353835
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
3836-
runAsRoot = permissionsStartOnly
3836+
runAsRoot = permissionsStartOnly or exe.nouser
38373837
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
38383838
run = subprocess_waitpid(forkpid)
38393839
logg.debug("post-stop done (%s) <-%s>",
@@ -3943,7 +3943,7 @@ def do_reload_service_from(self, conf):
39433943
logg.info("%s reload %s", runs, shell_cmd(newcmd))
39443944
forkpid = os.fork()
39453945
if not forkpid:
3946-
self.execve_from(conf, newcmd, env) # pragma: no cover
3946+
self.execve_from(conf, newcmd, env, exe.nouser) # pragma: no cover
39473947
run = subprocess_waitpid(forkpid)
39483948
if run.returncode and exe.check:
39493949
logg.error("Job for %s failed because the control process exited with error code. (%s)",

files/docker/systemctl3.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2991,9 +2991,9 @@ def do_start_service_from(self, conf):
29912991
exe, newcmd = self.exec_newcmd(cmd, env, conf)
29922992
logg.info(" pre-start %s", shell_cmd(newcmd))
29932993
forkpid = os.fork()
2994-
if not forkpid:
2994+
if not forkpid:
29952995
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
2996-
runAsRoot = permissionsStartOnly
2996+
runAsRoot = permissionsStartOnly or exe.nouser
29972997
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
29982998
run = subprocess_waitpid(forkpid)
29992999
logg.debug(" pre-start done (%s) <-%s>",
@@ -3016,7 +3016,7 @@ def do_start_service_from(self, conf):
30163016
forkpid = os.fork()
30173017
if not forkpid: # pragma: no cover
30183018
os.setsid() # detach child process from parent
3019-
self.execve_from(conf, newcmd, env)
3019+
self.execve_from(conf, newcmd, env, exe.nouser)
30203020
run = subprocess_waitpid(forkpid)
30213021
if run.returncode and exe.check:
30223022
returncode = run.returncode
@@ -3050,7 +3050,7 @@ def do_start_service_from(self, conf):
30503050
forkpid = os.fork()
30513051
if not forkpid: # pragma: no cover
30523052
os.setsid() # detach child process from parent
3053-
self.execve_from(conf, newcmd, env)
3053+
self.execve_from(conf, newcmd, env, exe.nouser)
30543054
self.write_status_from(conf, MainPID=forkpid)
30553055
logg.info("%s started PID %s", runs, forkpid)
30563056
env["MAINPID"] = strE(forkpid)
@@ -3093,7 +3093,7 @@ def do_start_service_from(self, conf):
30933093
forkpid = os.fork()
30943094
if not forkpid: # pragma: no cover
30953095
os.setsid() # detach child process from parent
3096-
self.execve_from(conf, newcmd, env)
3096+
self.execve_from(conf, newcmd, env, exe.nouser)
30973097
# via NOTIFY # self.write_status_from(conf, MainPID=forkpid)
30983098
logg.info("%s started PID %s", runs, forkpid)
30993099
mainpid = forkpid
@@ -3135,7 +3135,7 @@ def do_start_service_from(self, conf):
31353135
forkpid = os.fork()
31363136
if not forkpid: # pragma: no cover
31373137
os.setsid() # detach child process from parent
3138-
self.execve_from(conf, newcmd, env)
3138+
self.execve_from(conf, newcmd, env, exe.nouser)
31393139
logg.info("%s started PID %s", runs, forkpid)
31403140
run = subprocess_waitpid(forkpid)
31413141
if run.returncode and exe.check:
@@ -3170,7 +3170,7 @@ def do_start_service_from(self, conf):
31703170
forkpid = os.fork()
31713171
if not forkpid:
31723172
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
3173-
runAsRoot = permissionsStartOnly
3173+
runAsRoot = permissionsStartOnly or exe.nouser
31743174
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
31753175
run = subprocess_waitpid(forkpid)
31763176
logg.debug("post-fail done (%s) <-%s>",
@@ -3185,7 +3185,7 @@ def do_start_service_from(self, conf):
31853185
forkpid = os.fork()
31863186
if not forkpid:
31873187
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
3188-
runAsRoot = permissionsStartOnly
3188+
runAsRoot = permissionsStartOnly or exe.nouser
31893189
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
31903190
run = subprocess_waitpid(forkpid)
31913191
logg.debug("post-start done (%s) <-%s>",
@@ -3294,9 +3294,9 @@ def do_start_socket_from(self, conf):
32943294
exe, newcmd = self.exec_newcmd(cmd, env, conf)
32953295
logg.info(" pre-start %s", shell_cmd(newcmd))
32963296
forkpid = os.fork()
3297-
if not forkpid:
3297+
if not forkpid:
32983298
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
3299-
runAsRoot = permissionsStartOnly
3299+
runAsRoot = permissionsStartOnly or exe.nouser
33003300
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
33013301
run = subprocess_waitpid(forkpid)
33023302
logg.debug(" pre-start done (%s) <-%s>",
@@ -3338,7 +3338,7 @@ def do_start_socket_from(self, conf):
33383338
forkpid = os.fork()
33393339
if not forkpid:
33403340
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
3341-
runAsRoot = permissionsStartOnly
3341+
runAsRoot = permissionsStartOnly or exe.nouser
33423342
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
33433343
run = subprocess_waitpid(forkpid)
33443344
logg.debug("post-fail done (%s) <-%s>",
@@ -3351,7 +3351,7 @@ def do_start_socket_from(self, conf):
33513351
forkpid = os.fork()
33523352
if not forkpid:
33533353
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
3354-
runAsRoot = permissionsStartOnly
3354+
runAsRoot = permissionsStartOnly or exe.nouser
33553355
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
33563356
run = subprocess_waitpid(forkpid)
33573357
logg.debug("post-start done (%s) <-%s>",
@@ -3696,7 +3696,7 @@ def do_stop_service_from(self, conf):
36963696
logg.info("%s stop %s", runs, shell_cmd(newcmd))
36973697
forkpid = os.fork()
36983698
if not forkpid:
3699-
self.execve_from(conf, newcmd, env) # pragma: no cover
3699+
self.execve_from(conf, newcmd, env, exe.nouser) # pragma: no cover
37003700
run = subprocess_waitpid(forkpid)
37013701
if run.returncode and exe.check:
37023702
returncode = run.returncode
@@ -3726,7 +3726,7 @@ def do_stop_service_from(self, conf):
37263726
logg.info("%s stop %s", runs, shell_cmd(newcmd))
37273727
forkpid = os.fork()
37283728
if not forkpid:
3729-
self.execve_from(conf, newcmd, env) # pragma: no cover
3729+
self.execve_from(conf, newcmd, env, exe.nouser) # pragma: no cover
37303730
run = subprocess_waitpid(forkpid)
37313731
run = must_have_failed(run, newcmd) # TODO: a workaround
37323732
# self.write_status_from(conf, MainPID=run.pid) # no ExecStop
@@ -3759,7 +3759,7 @@ def do_stop_service_from(self, conf):
37593759
logg.info("fork stop %s", shell_cmd(newcmd))
37603760
forkpid = os.fork()
37613761
if not forkpid:
3762-
self.execve_from(conf, newcmd, env) # pragma: no cover
3762+
self.execve_from(conf, newcmd, env, exe.nouser) # pragma: no cover
37633763
run = subprocess_waitpid(forkpid)
37643764
if run.returncode and exe.check:
37653765
returncode = run.returncode
@@ -3793,7 +3793,7 @@ def do_stop_service_from(self, conf):
37933793
forkpid = os.fork()
37943794
if not forkpid:
37953795
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
3796-
runAsRoot = permissionsStartOnly
3796+
runAsRoot = permissionsStartOnly or exe.nouser
37973797
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
37983798
run = subprocess_waitpid(forkpid)
37993799
logg.debug("post-stop done (%s) <-%s>",
@@ -3833,7 +3833,7 @@ def do_stop_socket_from(self, conf):
38333833
forkpid = os.fork()
38343834
if not forkpid:
38353835
permissionsStartOnly = self.get_PermissionsStartOnly(conf)
3836-
runAsRoot = permissionsStartOnly
3836+
runAsRoot = permissionsStartOnly or exe.nouser
38373837
self.execve_from(conf, newcmd, env, runAsRoot) # pragma: no cover
38383838
run = subprocess_waitpid(forkpid)
38393839
logg.debug("post-stop done (%s) <-%s>",
@@ -3943,7 +3943,7 @@ def do_reload_service_from(self, conf):
39433943
logg.info("%s reload %s", runs, shell_cmd(newcmd))
39443944
forkpid = os.fork()
39453945
if not forkpid:
3946-
self.execve_from(conf, newcmd, env) # pragma: no cover
3946+
self.execve_from(conf, newcmd, env, exe.nouser) # pragma: no cover
39473947
run = subprocess_waitpid(forkpid)
39483948
if run.returncode and exe.check:
39493949
logg.error("Job for %s failed because the control process exited with error code. (%s)",

0 commit comments

Comments
 (0)