Рассмотрим сценарий, в котором исполняемый файл A.bin использует libY.so и libZ.so. A.c, Y.c и Z.c все написаны на C.
Z.c и Y.c скомпилированы в соответствующие файлы .so.
Это структура каталогов файлов
$ дом / бен / A.bin
$ Домой / Библиотека / libY.so
$ Главная / Библиотека / libZ.so
Когда я запускаю A.bin как обычный пользователь, A.bin работает как обычно.
Примечание: $ LD_LIBRARY_PATH содержит $ home / lib
Я изменил некоторый код в A.c, добавив некоторые функции, которые требуют привилегий администратора (например, привязка к порту менее 1000).
Я установил бит setuid для A.bin, libY.so и libZ.so в rwsrwsrws и изменил владельца файлов на root. Когда я пытаюсь запустить A.bin, я получаю следующую ошибку
ld.so.1: A.bin: fatal: libY.so: открыть не удалось: такого файла или каталога нет
Убитые
Когда я просто удаляю разрешение setuid из всех этих файлов, запускается двоичный файл, за исключением функциональных возможностей, где ему требуются права root.
Как преодолеть эту проблему?
Редактировать: ОС Solaris 5.10