web-dev-qa-db-ja.com

pingにsetuidビットが必要なのはなぜですか?

Raspberry PiのJessieバージョンでは、pingではsetuidビットを設定する必要があります。これの理論的根拠は何ですか?

9
Old Geezer

pingはICMPパケットを生成および受信する必要があります。通常、これは「rawソケット」を使用して行われます。これは、システム上の他のトラフィックを盗聴して妨害するために悪用される可能性があるため、ルート(cap_net_raw)に限定された機能です。

多くのディストリビューションは、完全ではなく、pingcap_net_raw特権(capabilities(7)およびgetcap(8)のマニュアルページを参照)を与えるだけです。 setuidルート。ただし、これには拡張属性(xattrs)をサポートするためにカーネルとファイルシステムの両方が必要であり、一部の「最小」システムはそれらを無効にします。

また、最近、特別な "ICMP"ソケットタイプ が追加され、追加の特権なしでICMPエコーメッセージのみを送信できるようになりました。ただし、pingコマンドはまだ更新されていません。

15
user1686