Линукс setcap и изменений в исполняемый файл

программа, которую я разрабатываю, использует raw сокеты. По соображениям безопасности для запуска программы, использующей необработанные сокеты, программа должна запускаться под пользователем с действующим идентификатором 0 (root?) или имеют возможность: CAP_NET_RAW.

так что после сборки я установил возможность с:

sudo setcap cap_net_raw+ep <executable>

файл в терминале меняется на красный фон с черным текстом, и я не уверен, что это значит. Он по-прежнему имеет все другие атрибуты файлов других программ, когда running ls -l Так что я не уверен, что именно имеет изменения для него. Я проверил, что возможность установлена с getcap

проблема после запуска setcap. Загрузчику не удается загрузить другие общие объекты с сообщением об ошибке " не удается найти файл."Без setcap программа работает и загружает все необходимые общие объекты (при запуске от root) но я бы предпочел не делать этого. Путь к общему объекту задается в LD_LIBRARY_PATH переменные среды.

любые подсказки или советы о том, что изменилось с исполняемым файлом, чтобы заставить загрузчик не загружать другие общие объекты? Может ли это быть потому, что другие общие объекты, которые он связывает, не имеют этой возможности?

Спасибо за любую помощь.

2
задан kris
04.01.2023 10:41 Количество просмотров материала 2448
Распечатать страницу

1 ответ

по крайней мере, для setuid программ, переменные среды, такие как LD_LIBRARY_PATH или LD_PRELOAD игнорируются по соображениям безопасности. Смотрите страницу man ld.so(8) для сведения.

я мог бы представить, что это то же самое или, по крайней мере, похожее для программ с набором возможностей. (Ни один человек страница capabilities(7) ни man страница ld.so(8) упомяните такие ограничения.)

2
отвечен Axel Beckert 2023-01-05 18:29

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх