別の 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。