Setcap не работает для необработанных сокетов в пользовательских дистрибутивах - PullRequest
0 голосов
/ 24 марта 2020

Я нахожусь в процессе создания небольшого linux дистрибутива на основе Debian для автоматического тестирования сети. Я сталкиваюсь с довольно раздражающей проблемой все же. Ряд приложений, таких как paris-traceroute, ping, dublin-traceroute и т. Д., Работают неправильно. Они возвращают ошибку невозможности открыть необработанный сокет ICMP. Я попытался использовать 'setcap cap_net_raw + ep ./application', и он не работает, хотя getcap указывает, что биты установлены.

Я также сталкиваюсь с той же проблемой, если пытаюсь использовать их как setuid root. Они работают только под sudo. Поэтому мне интересно, если я испортил разрешения для какой-то промежуточной библиотеки или есть какая-то другая проблема.

Кто-нибудь сталкивался с чем-то подобным или у вас есть решение?

Спасибо!

1 Ответ

0 голосов
/ 28 марта 2020

В случае, если кто-нибудь сталкивается с этим, я объясню, почему это не удается. Что я не упомянул, так это то, что приложения (такие как ping, et c) фактически установлены в / opt. В этом дистрибутиве / opt на самом деле и файловая система encfs, которая монтируется только после того, как livecd авторизован для сервера лицензирования (есть веские причины для этого - он автоматически проверяет сетевые соединения и отправляет результаты сетевому инженеру. Мы хотим только он запускается в течение определенного c периода времени, который будет связан с уведомлением о неисправности пользователя). Таким образом, / opt не настоящая файловая система - это зашифрованный файл, смонтированный с помощью предохранителя, который выглядит как файловая система. Как таковые setcap и setuid на самом деле не работают и, вероятно, не могут работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...