2009年3月14日土曜日

(FreeBSD) ssh sudoでドキっとした話

最近sudoを使うようになったんですが、先日、なんとなく、

ssh リモートホスト sudo コマンド~

というコマンドを実行したら



200903131



あらあら、パスワードがまるみえ!



パスワード入力時は、画面にエコーバックされないはずなのに、なぜか、全部、表示されちゃいます。



これって、端末(pseudo tty)のせいですよね、きっと。



おそらく、キー入力したとき、画面にその文字をエコーバックさせないように、sudoがttyの設定を変更するんだけど、sshの引数にコマンドを指定した場合は、sshがttyを割り振ってないので、エコーバックさせないようにできてない・・・、つまりエコーバックしちゃう、と。



どうすりゃいいのかっていうと、どうやら、sshに「-t」オプションをつければよいみたいです。


ssh -t リモートホスト sudo コマンド~



という感じ。



 



200903132



今度は、パスワードがエコーバックされません。



sshのマニュアルを見ると、-tオプションってのは

-t      Force pseudo-tty allocation.  This can be used to execute arbi-
        trary screen-based programs on a remote machine, which can be
        very useful, e.g. when implementing menu services.  Multiple -t
        options force tty allocation, even if ssh has no local tty.

というわけで、かならずpseudo-ttyを割り当てるよ、ってことらしいです。



sudoだけに限らず、sshで非対話的にコマンドを実行しようとするときは、同じことが言えると思います。



0 件のコメント:

コメントを投稿