2

次のコードを使用して、Javaアプリからコマンドを実行しています。

String cmd[] = {"sh","-c", "sudo chmod 777 -R " + path};
Terminal.runCommand(cmd);

.jarをクリックして実行し、[プログラムから開く]->[Java]を選択します。

問題は、「sudo」コマンドが原因でアプリがパスワードを待ち続けているのに、端末が呼び出されず、ユーザーがパスワードを指定できないことです。

では、どうすれば上記のクーマンドと端末を呼び出して、ユーザーにパスワードを挿入する機会を与え、アプリケーションを最終的に続行できるでしょうか。

ありがとうございました!

4

1 に答える 1

0

これは sudo に関する質問であり、Java に関する質問ではありません。sudo は root として処理を行います。プロセスにはルート権限がないため、sudo は人間を認証する必要があります。これは機能であって、バグではありません。システムは、root コマンドの実行を許可することは想定されていません。

1 つのオプションgksuとして、一部のディストリビューションではデフォルトで出荷されている代わりに使用することもできます。同様に動作しますが、(この場合は存在しない) 端末ではなく、GUI でパスワード ダイアログをポップアップします。

もう 1 つの方法は、Java プロセスを root として単純に実行することです。これには、セキュリティへの影響がすべて含まれます。状況によっては、これが有効な選択になることもありますが、注意が必要です。

または、man ページで sudo と sudoers を確認できます。パスワードを要求しないようにアカウントを構成し、必要なときに特定のコマンドに制限することができます。

于 2013-01-10T18:29:30.280 に答える