※この設定は、非常に危険な側面を持っています。
設定・運用に関しては細心の注意を払って行うようにしてください。
ここで説明した設定を行うことにより生じた不利益などに対して、一切の責任を負わな
いことを明記しておきます。
この設定を行おうと思った経緯
1台のUPSに複数台のサーバが接続されている場合、
設定例
コマンド発行マシン command-host
リモートシャットダウンを実行するサーバ remote-host
コマンドを実行するユーザ user01
事前設定
シャットダウンを実行させるホストから ssh-keygen で生成した公開鍵(キーフレーズなし)
をリモートでシャットダウンさせるサーバにコピーしておく
$ ssh-keygen -t rsa -b 2048
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user01@remote-host
リモートシャットダウンさせるサーバで下記コマンドを実行して /etc/suers ファイルの
編集を行う
# visudo
user01 ALL=(ALL) NOPASSWD: /sbin/shutdown -h now
コマンド発行マシンで下記コマンドを実行させて動作確認を行う
$ ssh -t user01@remote-host sudo /sbin/shutdown -h now
※コマンド単体だと、上記の記述で問題なく動作するのですが、cronや、他のアプリケーションから実行すると
sorry, you must have a tty to run sudo
というメッセージが記録されて、実行されない。
どうやら、最近のOSでは、セキュリティ的に問題になっているらしく、
tty つまり実際に端末(セッションとしての接続)が無いと
だめらしい・・・
そこで、
visudo
#Defaults requiretty
と、上記の行を、コメントアウトしてください。
これで、うまく行くと思います。