次のコマンドを実行して、setuid権限を持つシステム上のいくつかのファイルを探しています。
sudo find / -perm -4000
/bin/ping
リストに表示されることを確認しました。
pingにsetuid権限が必要な理由を説明できる人はいますか?
答え1
機能するには、ping
次のものを作成できる必要があります。生のネットワークソケット。これは通常権限のある操作です。
最新のLinuxシステムでできる「能力」を与えられた
たとえば、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プログラムによって付与された完全な「root」権限を付与することなく、よりきめ細かな形式の権限昇格を実行する新しい方法です。
機能がない場合、ping
raw ネットワークソケットを作成するには setuid ルートが必要です。