ค้นหาบริการที่ได้รับการแก้ไขระบบตามการเปิดเผยช่องโหว่เมื่อเร็ว ๆ นี้ฉันมาเพื่อดูพฤติกรรมแปลก ๆ จากคำสั่ง find
root@localhost:/# find . -name "*systemd-resolved*"
./usr/share/man/man8/systemd-resolved.service.8.gz
./usr/share/man/man8/systemd-resolved.8.gz
คำสั่งส่งคืน 0 หรือสองบรรทัดเป็นเอาต์พุตสำหรับการรันครั้งแรก แต่ถ้าฉันรันคำสั่งในครั้งที่สองฉันจะได้รับ:
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
นี่หมายถึงเป็นครั้งแรกที่ "ค้นหา" ไม่พบทุกสิ่ง นอกจากนี้สิ่งนี้เกิดขึ้นเพียงครั้งเดียว การรันคำสั่งครั้งต่อไปจะแสดงเอาต์พุตที่ถูกต้อง ฉันตรวจสอบเรื่องนี้ในบางระบบที่ติดตั้ง Debian 8 (jessie) สำหรับผู้ที่มีเคอร์เนล 4.9+ ปัญหานี้จะเกิดขึ้นเสมอ แต่สำหรับระบบที่มีเคอร์เนล 3.16 จะไม่เกิดขึ้น
หลังจากรีบูตระบบทั้งหมดนี้เกิดขึ้นอีกครั้ง แต่พฤติกรรมนั้นเหมือนกันสำหรับแต่ละระบบ นั่นหมายความว่าหากการทดสอบระบบเฉพาะส่งคืนสองบรรทัด (ผิด) สำหรับการรันครั้งแรกและเอาต์พุตที่ถูกต้องสำหรับการรันครั้งที่สองการรันครั้งแรกของคำสั่งหลังจากรีบูตระบบจะพิมพ์ 2 บรรทัดอีกครั้ง ดังนั้นระบบแสดงพฤติกรรมเดียวกันหลังจากรีบูตแต่ละครั้ง (ตามการทดสอบของฉัน) รายละเอียดไฟล์มีดังนี้:
-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
แก้ไข: ทุกคนที่แนะนำปัญหาอาจเกี่ยวข้องกับกรณีนี้เฉพาะสำหรับไฟล์เฉพาะเหล่านี้: " แก้ไขระบบ " เป็นเพียงตัวอย่าง สิ่งนี้จะเกิดขึ้นเมื่อค้นหาคำหลักอื่น ๆ ด้วย นี่เป็นอีกตัวอย่างที่ให้ผลที่ไม่ถูกต้องสำหรับการเรียกใช้ครั้งแรก:
root@localhost:/# find . -name "*apache*"
ไม่มีใครที่นี่สามารถตรวจสอบปัญหานี้กับ Debian 8 ที่มีเคอร์เนลล่าสุดจากที่เก็บ backport หรือไม่?
/lib/systemd
ติดตั้ง? มันเป็นระบบไฟล์ประเภทใด? ถ้ามันแยกจุดการกำหนดสิ่งที่เวลามันเป็นติด?
strace
? ระบบปฏิบัติการใดที่คุณสังเกตเห็นพฤติกรรมที่ผิดปกติ? คุณหมายถึงอะไรโดย "ส่งคืนผลลัพธ์ที่ 0 หรือสองอย่างเช่นด้านบน" เอาต์พุตเป็นศูนย์หรือสองบรรทัดหรือออกจากรหัส 0 + สองบรรทัด? มันเกิดขึ้นอีกครั้งหลังจากเริ่มเชลล์ใหม่หรือบูตใหม่? อาจเกี่ยวข้องว่าการโทรครั้งแรกจะส่งคืนไฟล์เท่านั้นในขณะที่การโทรครั้งที่สองจะส่งคืนไฟล์และไดเรกทอรี