diff --git a/src/service/service.cr b/src/service/service.cr index a83ed07..07031ca 100644 --- a/src/service/service.cr +++ b/src/service/service.cr @@ -143,13 +143,6 @@ class Service puts " - #{check.name}" child = Process.fork do - @reference.user.try do |user| - unless System.become_user user - STDERR << "service: child could not setuid() to user '#{user}'.\n" - exit 1 - end - end - Process.exec "sh", ["-c", evaluate check.command], output: Process::Redirect::Inherit, error: Process::Redirect::Inherit end.wait @@ -171,6 +164,13 @@ class Service LibC.dup2 stdout_file.fd, 1 LibC.dup2 stderr_file.fd, 2 + @reference.user.try do |user| + unless System.become_user user + STDERR << "service: child could not setuid() to user '#{user}'.\n" + exit 1 + end + end + Process.exec command, args, chdir: @reference.directory end