Linux SUID config вызывает сбой двоичного файла
У меня есть один двоичный файл (имя bmu), который требует привилегии root при вызове функции statfs.
ОС есть SuSE Linux 2.6.16.60-0.21-smp
Пользователь является пользователем test, который запускает 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 по тестам произойдет сбой с запросом "Библиотека 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 имеет проблему, так что кто-нибудь может дать некоторые предложения? Спасибо!
1 ответ
Когда программа запускается как setuid, LD_LIBRARY_PATH
переменная в вашей среде игнорируется, потому что это потенциальная уязвимость безопасности.
Вы должны связать свой двоичный файл, используя $ORIGIN
относительный rpath к зависимой библиотеке или абсолютная ссылка rpath на библиотеку. Обратитесь к странице справочника ld за подробной информацией о пути $ORIGIN.