Mencari layanan yang diselesaikan sistem setelah pengungkapan kerentanan terbaru, saya datang untuk melihat perilaku yang sangat aneh dari perintah find.
root@localhost:/# find . -name "*systemd-resolved*"
./usr/share/man/man8/systemd-resolved.service.8.gz
./usr/share/man/man8/systemd-resolved.8.gz
Perintah mengembalikan 0 atau dua baris sebagai output untuk menjalankan pertama. Tetapi jika saya menjalankan perintah yang kedua kalinya saya dapatkan:
root@localhost:/# find . -name "*systemd-resolved*"
./usr/share/man/man8/systemd-resolved.service.8.gz
./usr/share/man/man8/systemd-resolved.8.gz
./lib/systemd/systemd-resolved
./lib/systemd/system/systemd-resolved.service.d
./lib/systemd/system/systemd-resolved.service
Ini berarti pertama kali, "temukan" sebenarnya tidak menemukan segalanya. Ini juga hanya terjadi satu kali. Menjalankan perintah kali berikutnya menunjukkan output yang benar. Saya memeriksa ini pada beberapa sistem lain dengan Debian 8 (jessie) diinstal. Pada mereka yang memiliki Kernel 4.9+ masalah persis ini selalu terjadi tetapi pada sistem dengan kernel 3.16 itu tidak terjadi.
Setelah sistem reboot semua ini terjadi lagi. Tetapi perilaku ini sama untuk setiap sistem individu. Itu berarti bahwa jika pengujian pada sistem tertentu mengembalikan (salah) dua baris output untuk menjalankan pertama dan mengoreksi output untuk menjalankan kedua, maka jalankan perintah pertama setelah me-reboot sistem lagi mencetak 2 baris. Jadi sistem menunjukkan perilaku yang sama setelah setiap reboot (menurut tes saya). Rincian file adalah sebagai berikut:
-rw-r--r-- 1 root root ./usr/share/man/man8/systemd-resolved.service.8.gz
lrwxrwxrwx 1 root root ./usr/share/man/man8/systemd-resolved.8.gz -> systemd-resolved.service.8.gz
-rwxr-xr-x 1 root root ./lib/systemd/systemd-resolved
drwxr-xr-x 2 root root ./lib/systemd/system/systemd-resolved.service.d
-rw-r--r-- 1 root root ./lib/systemd/system/systemd-resolved.service
EDIT: Untuk semua orang yang menyarankan masalah mungkin terkait dengan kasus khusus ini untuk file-file spesifik ini: " sistem-diselesaikan " hanyalah sebagai contoh. Ini terjadi ketika mencari kata kunci lain juga. Ini adalah contoh lain yang memberikan hasil yang salah untuk proses pertama:
root@localhost:/# find . -name "*apache*"
Tidak ada orang di sini yang dapat memeriksa masalah ini pada Debian 8 dengan kernel terbaru dari repositori backport?
strace
? Di OS mana Anda mengamati perilaku yang salah? Apa yang Anda maksud dengan "mengembalikan 0 atau dua hasil seperti di atas"? Nol atau dua baris output, atau keluar kode 0 + dua baris? Apakah itu terjadi lagi setelah memulai shell baru atau me-reboot? Mungkin relevan bahwa panggilan pertama hanya mengembalikan file, sedangkan panggilan kedua mengembalikan file dan direktori./lib/systemd
dipasang? Sistem file apa itu? Jika itu terpisah mount point, apa waktu itu itu dipasang?Jawaban:
Versi default findutils yang diinstal pada Debian 8 adalah 4.4.2 dan ini adalah versi terbaru pada repositori jessie. Saya mengunduh kode sumber findutils versi terbaru (4.6.0) dan membuat binari dari sumber. Kemudian saya melakukan tes yang sama dan perintah "find" menunjukkan output yang benar untuk proses pertama.
Kemudian saya mengunduh kode sumber findutils versi 4.4.2 dari arsip gnu dan mengompilasinya. Masalah yang sama terjadi pada perintah find yang dikompilasi. Jadi masalah ini tidak terjadi dengan findutils 4.6.0.
Tapi saya masih tidak tahu mengapa beberapa pengguna tidak mendapatkan hasil yang sama menggunakan findutils 4.4.2 (versi default dari utilitas yang diinstal pada Debian), dan tidak tahu mengapa Debian masih harus dirilis dengan findutils versi lama ini. dan mungkin utilitas Linux lainnya dan menyebabkan situasi bermasalah ini. Dan hal terakhir adalah bahwa alasan teknis yang tepat dari apa yang anehnya terjadi masih belum diketahui yang tidak diinginkan. Karena saya tidak yakin apakah ada sesuatu yang mengkhawatirkan di lingkungan OS saya.
sumber