"/ Usr / bin / ping" se muestra como amarillo sobre rojo en el esquema de color predeterminado de Fedora bash. ¿Qué significa?


32

Al enumerar el directorio /usr/bin, uno ve que ping se muestra como amarillo sobre rojo:

ping se muestra amarillo sobre rojo

El archivo no tiene características especiales:

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

Según ¿Qué significan los diferentes colores en el terminal? , donde podemos encontrar una secuencia de comandos para enumerar las interpretaciones de color, "amarillo sobre rojo" significa "ca":

Colores vistos en el esquema de coloración bash predeterminado de Fedora

¿Qué significa "ca"? Tal vez significa que este archivo está vinculado desde otro lugar ( /usr/bin/pingy /usr/pingson el mismo archivo)

PD La pregunta ocurrió mientras veía Explicando Dirty COW , donde el pingcomando en Ubuntu se muestra como root setuid, lo que suena extraño:

ping raíz setuid

Respuestas:


51

Esto indica que pingtiene capacidades adicionales:

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

o incluso (en Fedora):

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

Esto permite pingabrir un socket sin procesar (y enviar y recibir paquetes ICMP) sin ejecutar como root.

setcap(8)y capabilities(7)dar mas detalles.

Históricamente, pingse instaló setuid para que se ejecute como rooty pueda usar sockets sin procesar; Una vez que las capacidades se volvieron utilizables, muchas distribuciones cambiaron a usarlas en su lugar, ya que el control más preciso que ofrecen sobre los permisos parece preferible. Sin embargo, en Ubuntu, aparentemente hay problemas con el instalador , por pinglo que todavía está instalado setuid root(el código de capacidades está deshabilitado en el script de mantenimiento relevante , que proviene de Debian, donde pingse configura utilizando capacidades si es posible).

La página de pingmanual describe sus requisitos así:

pingrequiere CAP_NET_RAWcapacidad para ejecutarse 1) si el programa se usa para consultas sin eco (Ver -Nopción), o 2) si el núcleo no admite sockets ICMP no sin procesar, o 3) si el usuario no tiene permiso para crear un eco ICMP enchufe. El programa se puede usar como root set-uid.


1
Gracias Stephen ¡Mi conocimiento del sistema es débil! Ni siquiera sabía que existían capacidades, y han estado allí desde el kernel 2.2 ... 26 de enero de 1999 . De acuerdo con la capabilities(7)página del manual, ningún estándar gobierna las capacidades, pero la implementación de la capacidad de Linux se basa en el borrador del estándar POSIX.1e retirado; mira aquí
David Tonhofer

Su captura de pantalla indica suid root.
Joshua

1
@Joshua en Ubuntu sí, pero la pregunta es sobre Fedora (primera captura de pantalla).
Stephen Kitt el

2
Vale la pena mencionar que la razón de la raíz setuid en otro sistema es la misma (para poder enviar y recibir paquetes ICMP) solo a través de un permiso menos detallado.
Kevin Reid

Gracias @KevinReid, he agregado eso a mi respuesta. (¡La explicación de Ubuntu es un poco más compleja de lo que pensé que sería!)
Stephen Kitt el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.