Почему для ping требуется бит setuid?

3075
Old Geezer

В версии Jessie для Raspberry Pi pingтребуется установить setuidбит. Что является обоснованием для этого?

8

1 ответ на вопрос

13
grawity

ping должен генерировать и получать ICMP-пакеты, и обычно это делается с использованием «сырых сокетов» - функции, ограниченной только root (cap_net_raw), поскольку ее также можно использовать для перехвата и прерывания другого трафика в системе.

Многие дистрибутивы теперь просто дают привилегию ping cap_net_raw (см. capabilities(7)И getcap(8)справочные страницы) вместо полного setuid root. Однако для этого необходимы ядро ​​и файловая система для поддержки расширенных атрибутов (xattrs), и некоторые «минимальные» системы их отключают.

Также недавно был добавлен специальный тип сокета "ICMP", который позволяет отправлять только эхо-сообщения ICMP без каких-либо дополнительных привилегий. Команда ping для него еще не обновлена.

я думаю, что способности (7) не используют xattrs. ggg 7 лет назад 0
@ggg: но это так. Попробуйте `getfattr --dump --match =. * / Sbin / ping`. grawity 7 лет назад 2