"/ Usr / bin / ping" ditampilkan sebagai kuning-merah di skema warna bash Fedora default - apa artinya?


32

Ketika daftar direktori /usr/bin, orang melihat yang ping ditampilkan sebagai kuning-merah:

ping ditunjukkan kuning-merah

File tidak memiliki fitur khusus:

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

Menurut Apa arti perbedaan warna di terminal? , di mana kita dapat menemukan skrip untuk membuat daftar interpretasi warna, "yellow-on-red" berarti "ca":

Warna terlihat dalam skema pewarnaan pesta standar Fedora

Apa artinya "ca"? Mungkin itu berarti bahwa file ini di-hardlink dari tempat lain ( /usr/bin/pingdan /usr/pingfile yang sama)

PS Pertanyaan muncul saat menonton Explaining Dirty COW , di mana pingperintah pada Ubuntu ditampilkan sebagai setuid root, yang terdengar aneh:

setuid root ping

Jawaban:


51

Ini menunjukkan bahwa pingmemiliki kemampuan tambahan:

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

atau bahkan (di Fedora):

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

Ini memungkinkan pinguntuk membuka soket mentah (dan mengirim dan menerima paket ICMP) tanpa menjalankan sebagai root.

setcap(8)dan capabilities(7)berikan lebih banyak detail.

Secara historis, pingdipasang setuid sehingga akan berjalan seperti rootdan dapat menggunakan soket mentah; begitu kemampuan menjadi dapat digunakan, banyak distribusi beralih untuk menggunakan itu, karena kontrol yang lebih halus yang mereka tawarkan atas izin tampaknya lebih disukai. Di Ubuntu, ada beberapa masalah dengan installer , jadi pingmasih diinstal setuid root(kode kapabilitas dinonaktifkan di skrip maintainer yang relevan , yang berasal dari Debian pingyang dikonfigurasi menggunakan kapabilitas jika memungkinkan).

Halaman pingmanual menjelaskan persyaratannya sebagai berikut:

pingmembutuhkan CAP_NET_RAWkemampuan untuk dieksekusi 1) jika program digunakan untuk permintaan non-gema (Lihat -Nopsi), atau 2) jika kernel tidak mendukung soket ICMP non-mentah, atau 3) jika pengguna tidak diizinkan untuk membuat gema ICMP stopkontak. Program ini dapat digunakan sebagai set-uid root.


1
Stephen terima kasih. Pengetahuan sistem saya lemah! Saya bahkan tidak tahu ada kapabilitas, dan sudah ada di sana sejak kernel 2.2 ... 26 Januari 1999 . Menurut capabilities(7)halaman manual, Tidak ada standar mengatur kemampuan, tetapi implementasi kemampuan Linux didasarkan pada draft standar POSIX.1e yang ditarik; lihat di sini
David Tonhofer

Cuplikan layarnya menunjukkan suid root.
Yosua

1
@ Joshua di Ubuntu ya, tapi pertanyaannya adalah tentang Fedora (tangkapan layar pertama).
Stephen Kitt

2
Mungkin perlu disebutkan bahwa alasan untuk setuid root pada sistem lain adalah sama (untuk dapat mengirim dan menerima paket ICMP) hanya melalui izin yang kurang halus.
Kevin Reid

Terima kasih @KevinReid, saya telah menambahkannya ke jawaban saya. (Penjelasan Ubuntu sedikit lebih kompleks daripada yang saya kira!)
Stephen Kitt
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.