Je veux un service basé sur l'utilisateur. J'ai donc créé [email protected]
dans /etc/systemd/system
avec le contenu suivant.
[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
Voici le contenu de ${HOME}/userscript
#!/bin/bash
while true;
do
echo $(date +%Y%m%d%a%H%M%S) >> log
echo $USER >> log
sleep 2
done
Ensuite, j'active et démarre le service en utilisant:
systemctl enable myservice@john
systemctl start myservice@john
Voici ce que je reçois lorsque je vérifie le statut du service:
● [email protected] - myservice
Loaded: loaded (/etc/systemd/system/[email protected]; 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/[email protected]
├─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
Le service doit écrire date-heure et nom d'utilisateur toutes les 2 secondes, mais cela n'arrivera pas et j'obtiendrai une erreur d'autorisations. J'ai confirmé que le service est exécuté en tant que john
et je pourrais l'obtenir correctement echo
. Un problème de permission apparaît lorsque j'essaie d'écrire dans le fichier.
Un indice?
PDATE 1
Voici la sortie de 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
Je l'ai finalement résolu. Je devais ajouter la directive WorkingDirectory
, avec la valeur ~
. Cela fonctionne maintenant sans problème d'autorisations.
Merci à @muru