„/usr/bin/ping“ wird im Standardfarbschema von Fedora Bash gelb auf rot angezeigt – was bedeutet das?

„/usr/bin/ping“ wird im Standardfarbschema von Fedora Bash gelb auf rot angezeigt – was bedeutet das?

Beim Auflisten des Verzeichnisses /usr/binsieht man, dass ping es gelb auf rot dargestellt wird:

Ping wird gelb auf rot angezeigt

Die Datei weist keine Besonderheiten auf:

$ 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: -

EntsprechendWas bedeuten die unterschiedlichen Farben im Terminal?, wo wir ein Skript zum Auflisten von Farbinterpretationen finden können. „Gelb auf Rot“ bedeutet „ca“:

Farben, die im Standardfarbschema von Fedora für Bash zu sehen sind

Was bedeutet "ca"? Vielleicht bedeutet es, dass diese Datei von woanders aus fest verknüpft ist ( /usr/bin/pingund /usr/pinges sich um dieselbe Datei handelt).

PS Die Frage ist beim Anschauen aufgetauchtErklärung zu Dirty COW, wobei der pingBefehl unter Ubuntu als setuid root angezeigt wird, was seltsam klingt:

Setuid-Root-Ping

Antwort1

Dies weist darauf hin, dass pingüber zusätzliche Funktionen verfügt:

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

oder sogar (unter Fedora bis zu 30):

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

Dies ermöglicht pingdas Öffnen eines Raw-Sockets (und das Senden und Empfangen von ICMP-Paketen), ohne als ausgeführt zu werden root.setcap(8)Undcapabilities(7)Geben Sie weitere Einzelheiten an.

In der Vergangenheit pingwurde setuid installiert, damit es als rootRaw Sockets ausgeführt werden und diese verwenden konnte. Sobald die Funktionen nutzbar wurden, wechselten viele Distributionen zu diesen, da die feinere Kontrolle, die sie über Berechtigungen bieten, vorzuziehen scheint. In Ubuntu jedoches gibt offenbar Probleme mit dem Installationsprogramm, also pingist immer noch setuid installiert root(der Fähigkeiten-Code ist deaktiviert indas entsprechende Maintainer-Skript, das von Debian stammt und pingkonfiguriert istFunktionen nutzenwenn möglich).

Die pingManpagebeschreibt seine Anforderungendaher:

pingerfordert CAP_NET_RAWdie Fähigkeit zur Ausführung, 1) wenn das Programm für Nicht-Echo-Abfragen verwendet wird (siehe -NOption), oder 2) wenn der Kernel keine nicht-rohen ICMP-Sockets unterstützt, oder 3) wenn der Benutzer keinen ICMP-Echo-Socket erstellen darf. Das Programm kann als Set-UID-Root verwendet werden.

Kernel 2.6.39 und höher bietenein weiterer Mechanismus, der es Programmen ermöglicht, ICMP-Echonachrichten zu senden und zu empfangen:net.ipv4.ping_group_range. Dies wird in Fedora 31 und höher verwendet, um pingdas Arbeiten ohne zusätzliche Fähigkeiten zu ermöglichen (insbesondere in Rootless-Containern); sieheWie funktioniert Ping unter Fedora ohne Setuid und Fähigkeiten?für Details.

verwandte Informationen