“/ Usr / bin / ping” é mostrado em amarelo no vermelho no esquema de cores padrão do Fedora bash - o que significa?

32

Ao listar o diretório /usr/bin, vê-se que ping é mostrado em amarelo-vermelho:

ping mostrado amarelo-vermelho

O arquivo não possui recursos especiais:

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

De acordo com o que significam as diferentes cores no terminal? , onde podemos encontrar um script para listar interpretações de cores "amarelo-vermelho" significa "ca":

Cores vistas no esquema de coloração padrão do Fedora

O que significa "ca"? Talvez isso signifique que este arquivo está vinculado de outro lugar ( /usr/bin/pinge /usr/pingé o mesmo arquivo)

PS: A pergunta ocorreu enquanto assistia Explaining Dirty COW , onde o pingcomando no Ubuntu é mostrado como setuid root, o que soa estranho:

ping de raiz setuid

David Tonhofer
fonte

Respostas:

51

Isso indica que pingpossui recursos extras:

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

ou mesmo (no Fedora):

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

Isso permite pingabrir um soquete bruto (e enviar e receber pacotes ICMP) sem executar como root.

setcap(8)e capabilities(7)dê mais detalhes.

Historicamente, pingfoi instalado o setuid para que funcionasse roote pudesse usar soquetes brutos; depois que os recursos se tornaram utilizáveis, muitas distribuições passaram a usá-los, pois o controle mais refinado que eles oferecem sobre permissões parece preferível. No Ubuntu, porém, há problemas aparentemente com o instalador , por isso pingainda está instalado o setuid root(o código de recursos está desabilitado no script do mantenedor relevante , que vem do Debian, onde pingé configurado usando recursos, se possível).

A página de pingmanual descreve seus requisitos assim:

pingrequer que a CAP_NET_RAWcapacidade seja executada 1) se o programa for usado para consultas sem eco (consulte a -Nopção) ou 2) se o kernel não suportar soquetes ICMP não brutos ou 3) se o usuário não tiver permissão para criar um eco ICMP tomada. O programa pode ser usado como root set-uid.

Stephen Kitt
fonte
1
Obrigado Stephen. Meu conhecimento do sistema é fraco! Eu nem sabia que os recursos existiam e eles existem desde o kernel 2.2 ... 26 de janeiro de 1999 . De acordo com a capabilities(7)página de manual, nenhum padrão governa os recursos, mas a implementação do recurso Linux é baseada no rascunho do padrão POSIX.1e retirado; Veja aqui
David Tonhofer 1/11/16
Seu instantâneo na tela indica suid root.
Joshua
1
@ Josué no Ubuntu sim, mas a questão é sobre o Fedora (primeira captura de tela).
Stephen Kitt
2
Vale a pena mencionar que o motivo da raiz setuid em outro sistema é o mesmo (para poder enviar e receber pacotes ICMP) apenas com uma permissão menos refinada.
Kevin Reid
Obrigado @KevinReid, adicionei isso à minha resposta. (A explicação Ubuntu é um pouco mais complexa do que eu pensei que seria!)
Stephen Kitt