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が存在することを確認してsuとして' 'を指定します。/ etc / sudoersをla Bash& 'su'スクリプトに変更して "standard in must be a 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端末はありません)。
ハマった。これを達成するのは難しいですか?
ベストプラクティスに対するすべての洞察とガイダンスに感謝します。