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.

Другие вопросы по тегам