«/usr/bin/ping» отображается желтым на красном фоне в цветовой схеме Fedora Bash по умолчанию. Что это значит?

«/usr/bin/ping» отображается желтым на красном фоне в цветовой схеме Fedora Bash по умолчанию. Что это значит?

При просмотре каталога /usr/binможно увидеть, что 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»:

Цвета, используемые в цветовой схеме Bash по умолчанию в Fedora

Что означает "ca"? Возможно, это означает, что этот файл связан с чем-то другим ( /usr/bin/pingи /usr/pingэто один и тот же файл)

P.S. Вопрос возник во время просмотраОбъясняя Dirty COW, где pingкоманда в Ubuntu отображается как setuid root, что звучит странно:

setuid root пинг

решение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открывать необработанный сокет (а также отправлять и получать пакеты ICMP) без запуска в качестве root.setcap(8)иcapabilities(7)дайте больше подробностей.

Исторически, pingбыл установлен setuid, чтобы он мог работать как rootи иметь возможность использовать сырые сокеты; как только возможности стали пригодными для использования, многие дистрибутивы перешли на их использование, поскольку более тонкий контроль, который они предлагают над разрешениями, кажется предпочтительным. В Ubuntu, однако,по-видимому, есть проблемы с установщиком, поэтому pingвсе еще установлен setuid root(код возможностей отключен всоответствующий скрипт сопровождающего, который поставляется с Debian, где pingнастроениспользование возможностейесли возможно).

pingСтраница руководстваописывает свои требованиятаким образом:

pingтребует CAP_NET_RAWвозможности для выполнения 1) если программа используется для неэхо-запросов (см. -Nпараметр), или 2) если ядро ​​не поддерживает несырые сокеты ICMP, или 3) если пользователю не разрешено создавать эхо-сокет ICMP. Программа может использоваться как set-uid root.

Ядра 2.6.39 и более поздние версии предоставляютдругой механизм, позволяющий программам отправлять и получать эхо-сообщения ICMP:net.ipv4.ping_group_range. Это используется в Fedora 31 и более поздних версиях, чтобы обеспечить pingработу без дополнительных возможностей (в частности, внутри контейнеров без прав root); см.Как работает ping в Fedora без setuid и capabilities?для получения подробной информации.

Связанный контент