Ubuntu 11.04 を実行しています。
"C" execlp プログラムを使用して Java プログラムを実行しようとしていますが、Java プログラムが root として実行できるように "C" プログラムで setuid したいと考えています。ここにこの例があります:
http://www.coderanch.com/t/110254/Linux-UNIX/setuid
私は tomcat ユーザーである代わりに root を使用したことを除いて、文字どおりに例に従いました。
ルートは、Java プログラムを実行する「C」プログラムを実行できます。そして、root 所有権を与える前に、ユーザー (私) は Java プログラムを実行する「C」プログラムを実行できます。しかし、setuid を使用するようにセットアップすると、ユーザーはプログラムを実行しようとします。LD_LIBRARY_PATH タイプのエラーと思われるものが表示されます: java: 共有ライブラリのロード中にエラーが発生しました: libjli.so: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません
libjli.so ファイルは Java JRE の下にあります。ユーザーとルートの両方が、個別に実行するときにこのファイルを見ることができます。しかし、root への setuid が行われた後にプログラムを実行すると、ユーザーはそれを見ることができません。
setuid プログラムの実行時にルートの LD_LIBRARY_PATH が設定される別の方法はありますか? これは対話型と非対話型の問題ですか?
何か案は?前もって感謝します。