2012-04-10 2 views
1

У меня есть один двоичный файл (имя bmu), которому нужна привилегия root при вызове функции statfs.
Linux SUID config вызвать двоичный файл не удалось выполнить

ОС SuSE Linux 2.6.16.60-0.21-smp
Пользователь тест, который должен работать BMU и не является привилегированным пользователем

[email protected]:~> 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
Если БМУ настроен SUID, когда БМУ запустить с помощью теста, она не будет выполнена с быстрой "СУБД API библиотеки 'libclntsh.so' загрузка не удается"

-rwsr-sr-x 1 root root 14389879 2012-04-10 10:38 bmu

---> сценарий 3
Если bmu запущен корнем, он будет выполнен успешно. конечно, независимо от того, настроен ли 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 имеет проблему, поэтому кто-то может дать некоторые предложения? благодаря!

ответ

2

Когда программа запускается как setuid, переменная LD_LIBRARY_PATH в вашей среде игнорируется, поскольку это потенциальная уязвимость системы безопасности.

Вы должны связать свой двоичный файл с помощью относительного обращения к зависимой библиотеке $ORIGIN или абсолютной ссылки на rpath для библиотеки. См. ld man page для получения подробных сведений о пути RAGE $ ORIGIN.

+0

очень точный и полезный ответ! спасибо, Петеш! Я добавляю требуемый путь lib к ld.so.conf, и программа работает хорошо. Я делаю простое описание операции: 1. logon system by root; 2. добавьте требуемый путь lib к /etc/ld.so.conf; 3. Запустите команду ldconfig; 4. su - test; 5. запустите двоичный файл, настроенный SUID, чтобы проверить результат: OK! – siikee

+0

Добавление пути библиотеки к /etc/ld.so.conf также является допустимой альтернативой – Petesh

Смежные вопросы