diff --git a/gnu/services/base.scm b/gnu/services/base.scm index a031ccc04b..b14bbcc3cd 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -1316,13 +1316,17 @@ (define syslog-service-type (documentation "Run the syslog daemon (syslogd).") (provision '(syslogd)) (requirement '(user-processes)) - (start #~(make-forkexec-constructor - (list #$(syslog-configuration-syslogd config) - "--rcfile" - #$(syslog-configuration-config-file config)) - ;; Set the umask such that file permissions are #o640. - #:file-creation-mask #o137 - #:pid-file "/var/run/syslog.pid")) + (start #~(let ((spawn (make-forkexec-constructor + (list #$(syslog-configuration-syslogd config) + "--rcfile" + #$(syslog-configuration-config-file config)) + #:pid-file "/var/run/syslog.pid"))) + (lambda () + ;; Set the umask such that file permissions are #o640. + (let ((mask (umask #o137)) + (pid (spawn))) + (umask mask) + pid)))) (stop #~(make-kill-destructor)))))) ;; Snippet adapted from the GNU inetutils manual.