0

私の新しい問題は、Java で sudo パーミッションを要求する bash シェル スクリプトを実行することです。私がやりたいことは、コマンドラインを使用して ds-389 データベースを ldif 形式にエクスポートすることです。これは ns-slapd db2ldif コマンドで行われます。これを行うためのメインのJava単純なコードは次のとおりです。

ProcessBuilder p = new ProcessBuilder("/bin/bash", "example.sh");
final Process process = p.start();

example.sh はプロジェクト ディレクトリにあり、アクセスに問題はありません。また、念のため chmod 777 で実行するスクリプトへのアクセス許可を追加します。Example.sh にはこれしかありません:

#!/bin/bash
ns-slapd db2ldif -D /etc/dirsrv/slapd-localhost -n userRoot -s "ou=Group,dc=localdomain" -a /tmp/file.ldif

私がこれまでに試したことは、visudoでこの行を追加することです:

nobody ALL=(ALL) NOPASSWD: /usr/sbin/ns-slapd
myUSER ALL=(ALL) NOPASSWD: /usr/sbin/ns-slapd
root ALL=(ALL) NOPASSWD: /usr/sbin/ns-slapd 
bin ALL=(ALL) NOPASSWD: /usr/sbin/ns-slapd 
myUSER ALL = NOPASSWD: /usr/bin/java 
root ALL= NOPASSWD: /usr/bin/java 
nobody ALL= NOPASSWD: /usr/bin/java 
bin ALL= NOPASSWD: /usr/bin/java

しかし、結果はありません..そして、はい、この変更により、パスワードを要求せずにコマンドラインでexample.shを実行できます。Java からこれを試すと、機能せず、/tmp に file.ldif が作成されません。どんな助けも大歓迎です。御時間ありがとうございます :)

4

2 に答える 2