「/usr/bin/ping」は、デフォルトの Fedora bash カラー スキームでは赤地に黄色で表示されますが、これはどういう意味ですか?

「/usr/bin/ping」は、デフォルトの Fedora bash カラー スキームでは赤地に黄色で表示されますが、これはどういう意味ですか?

ディレクトリを/usr/bin一覧表示すると、 ping 赤地に黄色で表示されます。

ping が赤地に黄色で表示される

このファイルには特別な機能はありません:

$ file /usr/bin/ping
/usr/bin/ping: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),
dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for
GNU/Linux 2.6.32, BuildID[sha1]=2508ea2a85b70c68967b3e6345541430f5317d5f,
stripped

$ stat /usr/bin/ping
   File: '/usr/bin/ping'
   Size: 62096           Blocks: 136        IO Block: 4096   regular file
Device: 802h/2050d      Inode: 4457229     Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:ping_exec_t:s0
Access: 2016-11-01 10:02:57.332925719 +0100
Modify: 2016-06-22 14:01:14.000000000 +0200
Change: 2016-07-10 23:41:59.623796126 +0200
Birth: -

によるとターミナル内のさまざまな色は何を意味しますか?、色の解釈をリストするスクリプトが見つかります。「赤地に黄色」は「ca」を意味します。

Fedora のデフォルトの bash カラースキームに表示される色

「ca」はどういう意味ですか? おそらく、このファイルは他の場所からハードリンクされている (/usr/bin/pingそして/usr/ping同じファイルである)ことを意味します。

PS 視聴中に疑問が浮かびましたDirty COW の説明pingUbuntu 上のコマンドは setuid root として表示されますが、これは奇妙に聞こえます。

setuid ルート ping

答え1

これは、 がping追加機能を持っていることを示します。

$ getcap /usr/bin/ping
/usr/bin/ping = cap_net_raw+ep

または(Fedora では最大 30):

$ getcap /usr/bin/ping
/usr/bin/ping = cap_net_admin,cap_net_raw+ep

これpingにより、 として実行せずに raw ソケットを開く (および ICMP パケットを送受信する) ことができますrootsetcap(8)そしてcapabilities(7)詳細を教えてください。

歴史的には、pingsetuid でインストールされroot、raw ソケットを使用できるように実行されていました。機能が使用可能になると、多くのディストリビューションは、権限に対するより細かい制御が望ましいと思われるため、代わりにそれらを使用するように切り替えました。ただし、Ubuntu では、インストーラーに問題があるようですなので、pingsetuidrootでインストールされています(ケーパビリティコードは無効になっています)関連するメンテナースクリプト、Debianから来ており、ping設定されている機能の使用もし可能なら)。

マンpingページ要件を説明するしたがって:

pingCAP_NET_RAW1) プログラムが非エコークエリに使用される場合 (オプションを参照)、または 2) カーネルが非 raw ICMP ソケットをサポートしていない場合、または 3) ユーザーが ICMP エコーソケットを作成することが-N許可されていない場合は、実行機能が必要です。プログラムは、set-uid ルートとして使用できます。

カーネル2.6.39以降では、プログラムがICMPエコーメッセージを送受信できるようにする別のメカニズム:net.ipv4.ping_group_rangeこれは、Fedora 31以降で、ping追加機能なしで動作できるようにするために使用されます(特に、ルートレスコンテナ内)。setuid と機能なしで Fedora で ping はどのように機能しますか?詳細については。

関連情報