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


Ответы:


15

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

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

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


я думаю, что способности (7) не используют xattrs.
ggg

2
@ggg: но это так. Попробуй getfattr --dump --match=.* /sbin/ping.
user1686
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.