2

Как я могу использовать команду ping в среде chroot?

$ ping 8.8.8.8
ping: icmp open socket: Operation not permitted

В настоящее время я использую CentO, но в идеале должно быть решение, которое работает во всех средах chroot.

3 ответа3

4

В Linux ping должен работать от имени пользователя root (потому что он должен связывать сокет необработанного IP-адреса; обычные пользователи могут использовать только UDP и TCP). Он предназначен для установки root. Похоже, ваша копия в chroot не установлена как root. Исправьте разрешения:

chown root:root /bin/ping; chmod u+srwx,go=rx /bin/ping

Обратите внимание, что в chroot могут быть другие команды, которые должны быть установлены (или setgid), в частности su и sudo .

Обратите внимание, что в этом ответе подразумевается chroot, а не что-то с большими ограничениями, например тюрьма.

3

Как уже указывалось, ping требуется разрешение для привязки необработанного IP-сокета. Традиционно setuid используется, чтобы позволить обычным пользователям использовать его. Однако, используя возможности (POSIX 1003.1e, возможности (7)), можно выборочно включать минимальный набор возможностей, ограничивая последствия для безопасности потенциальных уязвимостей.

ping нуждается в возможности CAP_NET_RAW . Предположим, что путь к двоичному файлу - /usr/bin/ping , возможность может быть установлена с помощью инструмента setcap:

setcap cap_net_raw+ep /usr/bin/ping

Используйте getcap чтобы проверить результат:

getcap /usr/bin/ping

На выходе должно быть что-то вроде

/usr/bin/ping = cap_net_raw+ep

и ping должен работать сейчас.

0

Не должно быть проблем с использованием ping или любой другой части цепочки инструментов gnu внутри chroot, если эти двоичные файлы присутствуют на вашем пути. Если эти команды недоступны, возможно, вам следует проверить переменные среды.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .