Сценарию услуг Systemd не удается записать в файл

Я хочу основанный на пользователе сервис. Таким образом, я создал myservice@.service в /etc/systemd/system со следующим содержанием.

[Unit]
Description=My Service

[Service]
Type=simple
ExecStart=/bin/bash ${HOME}/userscript
WorkingDirectory=${HOME}
Restart=always
RestartSec=2
User=%i

[Install]
WantedBy=multi-user.target

Следующее является содержанием ${HOME}/userscript

#!/bin/bash
while true;
do
    echo $(date +%Y%m%d%a%H%M%S) >> log
    echo $USER >> log
    sleep 2
done

Затем я включаю и запускаю сервисное использование:

systemctl enable myservice@john
systemctl start myservice@john

Это - то, что я получаю, когда я проверяю сервисное состояние:

● myservice@john.service - myservice
   Loaded: loaded (/etc/systemd/system/myservice@.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2017-12-11 08:03:54 PST; 6s ago
 Main PID: 11558 (bash)
   CGroup: /system.slice/system-myservice.slice/myservice@john.service
           ├─11558 /bin/bash /home/john/userscript
           └─11603 sleep 2

Dec 11 08:03:54 my-system-hostname systemd[1]: Started myservice.
Dec 11 08:03:54 my-system-hostname bash[11558]: /home/john/userscript: line 4: log: Permission denied
Dec 11 08:03:54 my-system-hostname bash[11558]: /home/john/userscript: line 5: log: Permission denied
Dec 11 08:03:56 my-system-hostname bash[11558]: /home/john/userscript: line 4: log: Permission denied
Dec 11 08:03:56 my-system-hostname bash[11558]: /home/john/userscript: line 5: log: Permission denied
Dec 11 08:03:58 my-system-hostname bash[11558]: /home/john/userscript: line 4: log: Permission denied
Dec 11 08:03:58 my-system-hostname bash[11558]: /home/john/userscript: line 5: log: Permission denied
Dec 11 08:04:00 my-system-hostname bash[11558]: /home/john/userscript: line 4: log: Permission denied
Dec 11 08:04:00 my-system-hostname bash[11558]: /home/john/userscript: line 5: log: Permission denied

Сервис должен писать дату и время и имя пользователя после каждых 2 секунд, но этого не произойдет, и вместо этого я получаю ошибку полномочий. Я подтвердил, что сервис выполняется как john и я мог получить его echoредактор правильно. Проблема разрешения появляется, когда я пытаюсь записать в файле.

Какая-либо подсказка?

ОБНОВЛЕНИЕ 1

Следующее является выводом namei -lx /home/john/log

$ namei -lx /home/john/log
f: /home/john/log
Drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr-xr-x john john john
-rw-rw-r-- john john log
3
задан 11 December 2017 в 15:47

1 ответ

Я наконец решил это. Мне пришлось добавить директиву WorkingDirectory со значением ~. Теперь он работает без каких-либо разрешений.

Благодаря @muru

2
ответ дан 11 December 2017 в 15:47

Другие вопросы по тегам:

Похожие вопросы: