statfs 関数を呼び出すときにルート権限が必要なバイナリ ファイル (名前は bmu) が 1 つあります。
OS はSuSE Linux 2.6.16.60-0.21-smp
bmu を実行するユーザーであり、root 以外のユーザーであるテストです。
test@SuSE:~> id
uid=1056(test) gid=0(root) groups=0(root),16(dialout),33(video)
3種類のシナリオをテストしました。
--->シナリオ 1
bmu が SUID で構成されていない場合、bmu は実行できますが、呼び出しは失敗します。
-rwxr-xr-x 1 test root 14389879 2012-04-10 10:38 bmu
--->シナリオ 2
bmu が SUID で構成されている場合、bmu をテストで実行すると、「DBMS API ライブラリ 'libclntsh.so' の読み込みに失敗しました」というプロンプトが表示されて失敗します。
-rwsr-sr-x 1 root root 14389879 2012-04-10 10:38 bmu
--->シナリオ 3
bmu を root で実行すると、正常に実行されます。もちろん、SUID が構成されているかどうかは関係ありません。
-rwxr-xr-x 1 root root 14389879 2012-04-10 10:38 bmu
-rwsr-sr-x 1 root root 14389879 2012-04-10 10:38 bmu
シナリオ 2 からは構成の問題のように見えますLD_LIBRARY_PATH
が、シナリオ 1 からは、これはLD_LIBRARY_PATH
構成の問題ではないことがわかります。シナリオ 3 から、bmu が root によって実行可能であることがわかります。
問題があるのはシナリオ 2 だけなので、誰か提案をいただけますか? ありがとう!