En utilisant CentOs, je souhaite exécuter un script en tant que "formation" d’utilisateur en tant que service système. J'utilise daemontools pour surveiller le processus, ce qui nécessite un script de lancement exécuté en tant que root:
:
#!/bin/bash exec >> /var/log/training_service.log 2>&1 setuidgid training training_command
Cette dernière ligne n'est pas suffisante car pour training_command, nous avons besoin d'un environnement permettant de définir l'utilisateur de la formation.
:
su - training -c 'training_command'
donne '
standard in must be tty
' as su en s'assurant que tty est présent pour potentiellement accepter le mot de passe. Je sais que je pourrais le faire disparaître en modifiant / etc / sudoers à la Bash et en écrivant le script 'su' en donnant une erreur "le standard doit être un tty" mais je suis réticent et incertain des conséquences.:
runuser - training -c 'training_command'
donne
runuser: cannot set groups: Connection refused
. Je n'ai trouvé aucun sens ou résolution à ce message.:
ssh -p100 training @ localhost 'source $ HOME / .bashrc; training_command '
Je reçois Host key verification failed.
(la clé de l'hôte IS est dans known_hosts, etc.).
Remarque: tous les 2,3,4 fonctionnent comme ils le devraient si j'exécute le script d'emballage à partir d'un shell root. des problèmes ne surviennent que si le moniteur de maintenance du système (daemontools) le lance (pas de terminal tty, je suppose).
Je suis coincé. Est-ce si difficile à réaliser?
J'apprécie toutes les idées et tous les conseils relatifs aux meilleures pratiques.