Я пытаюсь использовать 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.
Я попытался поместить библиотеку в /usr/lib, /usr/local/lib и /usr/lib64 с разрешениями setuid в соответствии с этой документацией выше, но она по-прежнему не работает. Если я не даю LD_PRELOAD путь в случае, когда у меня есть библиотека в стандартном dirs с setuid, она не может найти библиотеку. Если я дам ему путь, он ничего не сделает.
Бинарный файл 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)
