В версии Jessie для Raspberry Pi для ping
требуется установить бит setuid
. Что является обоснованием для этого?
1 ответ
ping должен генерировать и получать ICMP-пакеты, и обычно это делается с использованием "сырых сокетов" - функции, ограниченной только root (cap_net_raw), поскольку ее также можно использовать для перехвата и прерывания другого трафика в системе.
Многие дистрибутивы теперь просто дают ping привилегию cap_net_raw (см. Страницы capabilities(7)
и getcap(8)
) вместо полного корня setuid. Однако для этого необходимы ядро и файловая система для поддержки расширенных атрибутов (xattrs), и некоторые "минимальные" системы их отключают.
Также недавно был добавлен специальный тип сокета "ICMP", который позволяет отправлять только эхо-сообщения ICMP без каких-либо дополнительных привилегий. Команда ping для него еще не обновлена.