Я пытаюсь использовать 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
путь в случае, когда у меня есть библиотека в стандартных директориях с setuid, она не может найти библиотеку. Если я даю ему путь, он ничего не делает.
Двоичный файл setuid является двоичным файлом с правами доступа root, который запускается в пользовательской оболочке без полномочий root. Какие-нибудь мысли? Не уверен, что мне не хватает пути, переменной среды или я неправильно понимаю приведенную выше документацию.
Редактировать : запрошенные разрешения:
Библиотека:
-rwsr-sr-x 1 root root 72580 2012-02-10 07:51
App:
-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)