Используя CentOs, я хочу запустить скрипт как «обучение» пользователя как системный сервис. Я использую daemontools для мониторинга процесса, который требует запуска сценария запуска от имени пользователя root:
:
#!/bin/bash exec >> /var/log/training_service.log 2>&1 setuidgid training training_command
Эта последняя строка недостаточно хороша, так как для training_command нам нужна среда для обучения пользователя.
:
su - training -c 'training_command'
выдает '
standard in must be tty
', так как оно гарантирует наличие tty для потенциального принятия пароля Я знаю, что мог бы заставить это исчезнуть, изменив скрипт /etc /sudoers a la Bash & 'su', выдающий ошибку "стандарт должен быть tty", но я неохотно и не уверен в последствиях.:
runuser - training -c 'training_command'
дает
runuser: cannot set groups: Connection refused
. Я не нашел никакого смысла или разрешения для этого сообщения.:
ssh -p100 training @ localhost 'source $ HOME /.bashrc; training_command»
Мне не удалось Host key verification failed.
(ключ хоста находится в known_hosts и т. д.).
Примечание: все 2,3,4 работают должным образом, если я запускаю скрипт-обертку из корневой оболочки. проблемы возникают только в том случае, если монитор системного сервиса (daemontools) запускает его (нет терминала tty, я думаю).
Я застрял. Это так трудно достичь?
Я ценю все понимание и руководство для наилучшей практики.