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


32

ディレクトリを一覧表示すると/usr/binping 黄色が赤に表示されていることがわかり ます。

ping on red-on-red

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

$ 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 Ubuntu のコマンドがsetuid rootとして表示されるExplaining Dirty COWを見ているときに質問が発生しましたping

setuid root ping

回答:


51

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

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

または(Fedoraの場合):

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

これによりping、として実行せずに生のソケットを開く(およびICMPパケットを送受信する)ことができますroot

setcap(8)capabilities(7)さらに詳細を提供します。

歴史的に、pingsetuidとしてインストールされたため、root生のソケットとして実行され、使用できるようになりました。機能が使用可能になると、多くのディストリビューションが代わりにそれらを使用するように切り替わりました。許可を介して提供されるきめ細かい制御が望ましいと思われるためです。ただし、Ubuntuでは、明らかにインストーラーに問題があるためping、まだsetuidがインストールされrootています(可能な場合は機能を使用して構成されたDebianからの関連するメンテナースクリプトで機能コードが無効になっています)。ping

したがって、pingマンページにはその要件記載されています

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


1
ステファン、ありがとう。システムの知識が弱い!機能が存在することすら知りませんでしたが、それらはカーネル2.2 ... 1999年1月26日から存在していました。capabilities(7)manページによると、機能を管理する標準
デビッドトンホーファー

彼の画面のスナップショットは、suid rootを示しています。
ジョシュア

1
Ubuntuの@Joshuaはい。ただし、問題はFedoraについてです(最初のスクリーンショット)。
スティーブンキット

2
別のシステムでのsetuid rootの理由は、きめの細かい許可だけで同じ(ICMPパケットを送受信できるため)であることに言及する価値があるかもしれません。
ケビンリード

@KevinReidに感謝します。これを回答に追加しました。(Ubuntuの説明は、思っていたよりも少し複雑です!)
スティーブンキット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.