В версии Jessie для Raspberry Pi ping
требуется установить setuid
бит. В чем причина этого?
В версии Jessie для Raspberry Pi ping
требуется установить setuid
бит. В чем причина этого?
Ответы:
ping должен генерировать и получать ICMP-пакеты, и обычно это делается с использованием «сырых сокетов» - функции, ограниченной только root (cap_net_raw), поскольку ее также можно использовать для перехвата и прерывания другого трафика в системе.
Многие дистрибутивы теперь просто дают привилегию ping cap_net_raw (см. capabilities(7)
И getcap(8)
справочные страницы) вместо полного setuid root. Однако для этого необходимы ядро и файловая система для поддержки расширенных атрибутов (xattrs), и некоторые «минимальные» системы их отключают.
Также недавно был добавлен специальный тип сокета «ICMP», который позволяет отправлять только эхо-сообщения ICMP без каких-либо дополнительных привилегий. Команда ping для него еще не обновлена.
getfattr --dump --match=.* /sbin/ping
.