次のコマンドを実行して、システムのsetuidアクセス権を持つシステム上のいくつかのファイルを確認しています。
Sudo find / -perm -4000
きがついた /bin/ping
がリストに表示されます。
Pingがsetuid許可を必要とする理由を誰かが説明できますか?
ping
が機能するためには、rawネットワークソケットを作成できる必要があります。これは通常、特権アクションです。
最近のLinuxシステムでは、これはcanに「機能」を付与する
たとえば、CentOS 7の場合:
$ ls -l /bin/ping
-rwxr-xr-x 1 root root 62088 Nov 7 2016 /bin/ping*
$ getcap /bin/ping
/bin/ping = cap_net_admin,cap_net_raw+p
Debian 9.1(ストレッチ)の場合:
$ getcap /bin/ping
/bin/ping = cap_net_raw+ep
機能は、setuidプログラムで許可された「ルート」全体を許可せずに、より細かい形式の特権エスカレーションを実行する新しい方法です。
機能がない場合、生のネットワークソケットを作成するには、ping
をsetuidルートにする必要があります。