#linux #chmod #rpath
Вопрос:
Немного фона:
У меня есть исполняемая, для запуска которой требуются права администратора. Этот исполняемый файл также зависит от времени выполнения пользовательской динамической библиотеки. Эта динамическая библиотека должна быть загружена из пользовательского пути (а не из /usr/lib
-за наличия аналогичной старой версии этого исполняемого файла, на которую могут ссылаться другие библиотеки), на который ссылается исполняемый файл при настройке -RPATH
при компиляции исполняемого файла.
Когда я запустил этот исполняемый файл из командной строки с помощью sudo
команды, все работает просто отлично, как и ожидалось.
Теперь этот исполняемый файл взят fork/exec
из другого некорневого процесса, для которого я настраиваю разрешение на файл chmod
исполняемого 4755
файла, чтобы исполняемый файл всегда запускался от имени root.
Проблема сейчас заключается в следующем: когда я устанавливаю разрешение на файл chmod
4755
, система -RPATH
больше не соблюдает его , и мой исполняемый файл по умолчанию ищет путь к библиотеке /usr/lib
, закончен -RPATH
.
Вопрос: Как я могу заставить свой исполняемый файл предпочесть -RPATH
/usr/lib
, независимо от того, что указано в моем разрешении на файл (или, по крайней мере chmod 4755
)?
Ответ №1:
Просто на случай, если какая-нибудь душа столкнется с этой проблемой, вот что я сделал, чтобы решить эту проблему.
Просто загрузите dylibs программно с помощью API dlopen, жестко закодировав пути.