LD_PRELOAD
setuid パーミッションを持つアプリケーションでライブラリをプリロードするために使用しようとしています。最初に試しLD_PRELOAD
てみたところ、setuid バイナリでは無視されているように見えましたがls
、dir
などで試してみると機能していました。
LD_PRELOAD のドキュメントから:
LD_PRELOAD
A whitespace-separated list of additional, user-specified, ELF shared
libraries to be loaded before all others. This can be used to
selectively override functions in other shared libraries. For set-
user-ID/set-group-ID ELF binaries, only libraries in the standard
search directories that are also set-user-ID will be loaded.
上記のこのドキュメントに従って setuid パーミッションを使用してライブラリを/usr/lib
、/usr/local/lib
、およびに配置しようとしましたが、まだ機能していないようです。/usr/lib64
setuidLD_PRELOAD
を使用して標準ディレクトリにライブラリがある場合にパスを指定しないと、ライブラリが見つからないように見えます。パスを指定しても、何もしません。
setuid バイナリは、root 以外のユーザー シェルで実行される root 権限バイナリです。何かご意見は?パスや環境変数が欠落しているのか、上記のドキュメントを誤解しているのかわかりません。
編集: 要求された権限は次のとおりです。
としょうかん:
-rwsr-sr-x 1 root root 72580 2012-02-10 07:51
アプリ:
-rwsr-xr-x 1 root root 137517601 2012-02-10
env | grep LD
LD_LIBRARY_PATH=/usr/lib (I added this manually myself, usually LD_LIBRARY_PATH is empty)