Чому для ping потрібен встановлений біт?


Відповіді:


15

ping повинен генерувати та отримувати пакети ICMP, і зазвичай це робиться за допомогою "raw sockets" - функція, обмежена коренем (cap_net_raw), оскільки його також можна зловживати, щоб нюхати та порушити інший трафік у системі.

Зараз у багатьох дистрибутивах просто надається пінг привілей cap_net_raw (див . Сторінки capabilities(7)та getcap(8)інструкції) замість повного встановленого кореня. Однак для цього потрібно як ядро, так і файлова система для підтримки розширених атрибутів (xattrs), а деякі "мінімальні" системи відключають їх.

Також нещодавно було додано спеціальний тип розеток "ICMP", який дозволяє надсилати повідомлення ICMP Echo лише без додаткових привілеїв. Команда ping для неї ще не оновлена.


Я думаю, що можливості (7) не використовують xattrs.
ggg

2
@ggg: Але це так. Спробуйте getfattr --dump --match=.* /sbin/ping.
користувач1686
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.