Pictnotes メインイメージ

お仕事メモ

cron 経由や、sshからリモートの、sudo を実行したい場合

sshから、該当のコマンドを実行するときに、セキュリティの問題で
sudo: sorry, you must have a tty to run sudo
と怒られる、のですがこれを解消するためのメモ
 



sudoの設定ファイルの

Defaults    requiretty

Defaults    !requiretty

とか、それ自体をコメントアウトする必要があるのですがSSHのコマンドからの実行なら

ssh -t hostname sudo <cmd>

と -t オプションを付けると動く様になります。

マニュアルには、

 -t
    強制的に仮想端末を割り当てます。これはリモートマシン上で任意の画面ベースのプログラムを実行するとき(たとえば、メニューサービスを実装するときな ど)に非常に便利です。複数の-t をつけると、たとえssh がローカル側での端末を持っていない場合でも強制的に仮想端末を割り当てます。

とあるので、実際は強制的に仮想端末を割り当てるために、

ssh -t -t hostname sudo <cmd>
と同じオプションを複数つけてあげるて、

ssh -t -t user@hostname "/usr/bin/sudo /home/usr/batch.sh"

という風にすると sudoで指定されいているユーザ権限で動きます。

どのユーザで動いてるかは、whoamiコマンドでも発行するとすぐわかって便利です。

 

その他   2012/08/22   admin