"/ Usr / bin / ping" відображається як жовто-червоний колір у кольоровій гамі Fedora за замовчуванням - що це означає?


32

Перераховуючи каталог /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 за замовчуванням

Що означає "ca"? Можливо, це означає, що цей файл посилається з інших місць ( /usr/bin/pingі /usr/pingце той самий файл)

PS Питання виникло під час перегляду пояснення брудної COW , де pingкоманда на Ubuntu відображається як встановлений корінь, що звучить дивно:

встановлений кореневий пінг

Відповіді:


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)детальніше.

Історично pingвстановлено, що він був встановлений так, щоб він працював як rootі міг використовувати необроблені розетки; Як тільки можливості стали доступними, багато дистрибутивів перейшли на використання цих замість цього, оскільки більш точний контроль, який вони пропонують над дозволами, здається кращим. У Ubuntu, однак, є проблеми, очевидно, з установщиком , тому pingвін все ще встановлюється налаштованим root(код можливостей вимкнено у відповідному сценарії технічного обслуговування , який надходить з Debian, де pingналаштовано за можливості, якщо це можливо).

pingСторінка керівництва описує свої вимоги таким чином:

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


1
Дякую Стівен. Мої системні знання слабкі! Я навіть не знав, що існують можливості, і вони існують з ядра 2.2 ... 26 січня 1999 року . Згідно з capabilities(7)довідковою сторінкою, Ніякі стандарти не регулюють можливості, але реалізація можливостей Linux базується на вилученому проектному стандарті POSIX.1e; дивіться тут
Девід Тонхофер

Знімок його екрана вказує на корінь шару.
Джошуа

1
@Joshua в Ubuntu так, але питання стосується Fedora (перший скріншот).
Стівен Кітт

2
Можливо, варто згадати, що причина встановленого кореня в іншій системі та сама (щоб мати змогу надсилати та отримувати пакети ICMP) лише через менш тонкий дозвіл.
Кевін Рейд

Дякую @KevinReid, я додав це до своєї відповіді. (Пояснення Ubuntu трохи складніше, ніж я думав, що це буде!)
Стівен Кітт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.