13

別の UNIX ユーザーとして UNIX コマンドを実行できる Java プログラムを作成しようとしています。私はユーザーのパスワードを持っており、実行したいコマンドを知っていますが、コマンドはそのユーザーとして実行する必要があるため、最初にそのユーザーとしてログインする必要があります。

たとえば、bob のホーム ディレクトリの内容を確認したいユーザー jim がいて、(何らかの理由で) jim には ls を実行するアクセス権があるが、bob にはアクセスできないとします。現在、 bob としてログインしています。これが私たちが(できる)ことです:

bob@host$ su jim && ls ~bob

問題は、ジムのパスワードの入力を求められることです。これはJavaプログラムから実行されるため、つまり

Process p = Runtime.getRuntime().exec("su jim && ls ~bob");

ジムのパスワードの入力を求められ、電話を切りました。私たちはジムのパスワードを知っています。しかし、私はそれを入力することはできません。

さらに、Expect スクリプトを使用できず (インストールしていない)、スーパーユーザーになることもできません。技術的には可能だったので、これを試すためにSSHを使用することも検討しました

bob@host$ ssh jim@host "ls ~bob"

ただし、パスワードなしの SSH をセットアップする権限がないため、これも機能しません。

私の最後の努力は、Java 用の SSH ライブラリを試して使用することです。これは、パスワードが Java プログラムで使用可能であり、それを使用してログイン (および適切なコマンドを実行) できるためです。しかし、同じホストで実行することになるので、やり過ぎのように思えます。

助言がありますか?

PS: Java バージョン 1.4.2、アップグレードできません。AIX UNIX 5.3。

4

6 に答える 6

8

sudo をインストールし、Java プログラムを実行しているユーザーに問題のコマンドを /etc/sudoers に入力してもらい、sudo -u jim ls ~bob.

于 2009-06-18T14:05:45.750 に答える
6

問題が解決しました。JSch ( http://www.jcraft.com/jsch/ ) を使用して、既知のユーザー名とパスワードでサーバーに SSH 接続し、コマンドを実行します。ご提案いただきありがとうございます。

于 2009-06-18T16:30:45.423 に答える