「nethogs」をインストールするときにsetuidビットが設定されていないのはなぜですか?

「nethogs」をインストールするときにsetuidビットが設定されていないのはなぜですか?

nethogs私はこれをしばらく使用しており、sudo毎回setuidビットを設定する必要がありましたping。今日私はそれをnethogsに設定して動作しました。

$ ls -l $(which nethogs) $(which ping)
-rwxr-xr-x 1 root root  64496 Nov  2  2011 /usr/sbin/nethogs
-rwsr-xr-x 1 root root 44168 May  7 17:21 /bin/ping

$ sudo chmod u+s  $(which nethogs)

$ ls -l $(which nethogs)
-rwsr-xr-x 1 root root 64496 Nov  2  2011 /usr/sbin/nethogs

$ nethogs

基本的にこのようにインストールされない理由を考えることはできますか?

答え1

pingsetuidはかなり「安全」ですが、生のソケットを開くことができるはずです。ついにかかるCAP_NET_RAW能力があるかルートになります。

nethogsいくつかの理由で異なります。ネットワークスタックへの特権アクセスが必要なだけでなく、他のユーザーに関する情報も表示することに注目する価値があります。マルチユーザーシステムでは、誰が誰を使用しているのかわからないようにしたいと思います。

nethogsもう一つの理由は、これがかなり複雑な手順であるためです。 setuid プログラムの実行追加のセキュリティが必要: たとえば、バッファオーバーフローによってランダムな特権の昇格が発生する可能性があります。ping安全のためには、誰が実際に実行しているかを検出し、異なる動作をするように注意する必要があります(たとえば、ping -f実際にはルートの場合にのみ機能します)。 nethogs.

ユーザーにrootアクセス権を要求すると、すでにこれらの問題を回避または委任できますsudo。すでにルートの場合は、権限の上昇について心配する必要はありません。通常、プログラムは機能にとって重要でない限り、デフォルトではsetuidを設定しませんpasswd

つまり、シングルユーザーシステムやこれらの問題に興味がないシステムでは、自分の便宜のためにsetuidに設定することは大きな問題ではありません。

関連情報