программа, которую я разрабатываю, использует raw сокеты. По соображениям безопасности для запуска программы, использующей необработанные сокеты, программа должна запускаться под пользователем с действующим идентификатором 0 (root?) или имеют возможность: CAP_NET_RAW.
так что после сборки я установил возможность с:
sudo setcap cap_net_raw+ep <executable>
файл в терминале меняется на красный фон с черным текстом, и я не уверен, что это значит. Он по-прежнему имеет все другие атрибуты файлов других программ, когда running ls -l
Так что я не уверен, что именно имеет изменения для него. Я проверил, что возможность установлена с getcap
проблема после запуска setcap
. Загрузчику не удается загрузить другие общие объекты с сообщением об ошибке " не удается найти файл."Без setcap
программа работает и загружает все необходимые общие объекты (при запуске от root) но я бы предпочел не делать этого. Путь к общему объекту задается в LD_LIBRARY_PATH
переменные среды.
любые подсказки или советы о том, что изменилось с исполняемым файлом, чтобы заставить загрузчик не загружать другие общие объекты? Может ли это быть потому, что другие общие объекты, которые он связывает, не имеют этой возможности?
Спасибо за любую помощь.