“/ Usr / bin / ping”, varsayılan Fedora bash renk şemasında kırmızı renkte sarı olarak gösterilir - bu ne anlama geliyor?


32

Dizin listeleme yaparken /usr/bin, tek görür ping sarı-on-kırmızı olarak gösterilir:

ping sarı-kırmızıya gösterilen

Dosyanın hiçbir özelliği yok:

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

Terminale göre farklı renkler ne anlama geliyor? renk yorumlarını listelemek için bir komut dosyası bulabiliriz, "kırmızıya sarı", "ca" anlamına gelir:

Fedora varsayılan bash boyama şemasında görülen renkler

"Ca" ne anlama geliyor? Belki de bu dosyanın başka bir yerden bağlantısı olduğu anlamına geliyor ( /usr/bin/pingve /usr/pingaynı dosya).

İzlerken PS soru oluştu Kirli COW açıklanması , pingUbuntu'da komut tuhaf geliyor setuid root olarak gösteri:

setuid kök ping

Yanıtlar:


51

Bu ping, ekstra yeteneklere sahip olduğunu gösterir :

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

veya hatta (Fedora'da):

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

Bu, pingham bir soketin açılmasına (ve ICMP paketlerinin gönderilmesine ve alınmasına), çalıştırmadan çalışmasına olanak tanır root.

setcap(8)ve capabilities(7)daha fazla ayrıntı ver.

Tarihsel olarak, ham soketleri kullanabilmesi ve kullanabilmesi için pingsetuid kuruldu root; yetenekler kullanılabilir hale gelince, birçok dağıtım bunun yerine kullanılmaya başlandı, çünkü izinler üzerinde sundukları ince taneli kontrol tercih ediliyor gibi görünüyor. Ubuntu içinde olsa da, konular görünüşte yükleyicisi ile vardır bu yüzden, pinghala setuid yüklenir root(yetenekleri kod devre dışı bırakılır ilgili sürdürücü komut Debian geliyor pingyapılandırıldığı özelliklerini kullanarak mümkünse).

pingManpage onun gereklerini açıklar böylece:

pingYürütme CAP_NET_RAWyeteneği gerektirir 1) program eko ​​olmayan sorgular için kullanılıyorsa (Bkz. -Nseçenek) veya 2) çekirdek ham olmayan ICMP soketlerini desteklemiyorsa veya 3) kullanıcının bir ICMP eko oluşturma izni yoksa priz. Program set-id root olarak kullanılabilir.


1
Teşekkürler Stephen. Sistem bilgim zayıf! Yeteneklerin var olduğunu bile bilmiyordum, ve onlar çekirdek 2.2'den beri oradalar ... 26 Ocak 1999 . Göre capabilities(7)adam sayfasında, Hiçbir standartlar yetenekleri yöneten, ancak Linux yeteneği uygulama çekilen POSIX.1e taslak standardına dayanmaktadır; buraya
David Tonhofer

Ekran görüntüsü, intihar kökünü gösterir.
Joshua

1
@Joshua, Ubuntu'da evet, ancak soru Fedora'yla ilgili (ilk ekran görüntüsü).
Stephen Kitt

2
Başka bir sistemde setuid root nedeninin, daha az ince taneli bir izinle aynı (ICMP paketlerini gönderip alabilmek için) aynı olduğunu belirtmekte fayda var.
Kevin Reid

Teşekkürler @KevinReid, Cevabımı buna ekledim. (Ubuntu'nun açıklaması düşündüğümden biraz daha karmaşık!)
Stephen Kitt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.