質問: 別サーバの実行ユーザの変更 またシェルスクリプト初心者でっす 調べてみたものの今一つ見つけきれませんでした ボーンでの質問です サーバa上のシェルスクリプト(a.sh)からsshでサーバbへログインし、 サーバb上のシェルスクリプト(b.sh)を実行させようと思い a.sh内に下記の記述を施しました ssh [ユーザ名]@[サーバ名] "su - ; sh [フルパス]b.sh" この記述を施したa.shをサーバa上で実行したところ standard in must be a tty と端末がないと表示され、実行ユーザが変更されませんでした いろいろ調べてsudoでやるといいという話があったので a.sh内のsuをsudo(-s)に変更して試したところ、 今度はパスワードを聞かれたのですが、パスワード入力がマスクされず、 パスワードを入力すると応答が返ってこなくなりました 質問としてはサーバbの実行ユーザを変更するにはどうすればよいか となります よろしくお願いいたします ※b.sh自体はshコマンドで実行はされます ただ、内部でプロセスをkillしようとするのですが、 そのプロセスのユーザかあるいはrootにならなければ killの権限がないのでkillできない状態となってしまい、 やりたいことが実現できない状態です
回答: まず余談から入りますが、 >su - ; sh [フルパス]b.sh su で、特定コマンドを実行するやり方が間違っています。 su - -c 'sh [フルパス]b.sh' あるいは、b.sh の実行ビッドをオンにして、 su -c 'sh [フルパス]b.sh' です。 回答としては、お調べの通り sudo を使います。 ssh [ユーザ名]@[サーバ名] sudo [フルパス]b.sh [sudo] password for ユーザ名: に対して、rootでなくssh先ユーザのパスワードを入れます。 >今度はパスワードを聞かれたのですが、 具体的なメッセージは? /etc/sudoers の 下記のあたりの記述は、どうなってますか?有効?コメント? !visiblepw? defaults requiretty defaults visiblepw