ตามที่izxแสดงความคิดเห็นสิ่งนี้ควรเกิดขึ้นได้เนื่องจากเคอร์เนลบั๊ก ดังนั้นทุกคนที่อยู่ในปัจจุบันสามารถผลิตปัญหานี้ - รวมและโดยเฉพาะอย่างยิ่งโปสเตอร์เดิมของคำถามนี้ - จะดีควรที่จะรายงานว่าเป็นข้อผิดพลาดจากการอ่านหน้านั้นอย่างละเอียดและรอบคอบแล้วทำงานubuntu-bug linux
บนเครื่องได้รับผลกระทบ สิ่งนี้ควรได้รับการรายงานlinux
ใน Ubuntu และไม่ใช่กับเคอร์เนลการฉีด (อัปสตรีม) เว้นแต่คุณจะสามารถสร้างขึ้นบนเคอร์เนลการฉีดได้ (คุณต้องyama
โหลด)
พฤติกรรมที่คาดหวังในอูบุนตูทุกรุ่นที่เริ่มต้นด้วย Ubuntu 10.10 คือกระบวนการ A ไม่สามารถติดตามกระบวนการที่กำลังรัน B ยกเว้นว่า B เป็นลูกโดยตรงของ A (หรือ A วิ่งตามroot
) นี่คือการปรับปรุงความปลอดภัยซึ่งทำให้กระบวนการที่ถูกโจมตีโดยผู้โจมตีไม่สามารถใช้สิ่งอำนวยความสะดวกในการตรวจแก้จุดบกพร่องที่จัดเตรียมโดยเคอร์เนลเพื่อค้นหาข้อมูลจากกระบวนการอื่น นี่คือคำอธิบายในขอบเขต ptraceส่วนของคุณลักษณะด้านความปลอดภัยหน้าวิกิพีเดียชุมชน
พฤติกรรมที่ จำกัด นี้เป็นค่าเริ่มต้น แต่สามารถเปลี่ยนแปลงได้เพื่อให้กระบวนการ A สามารถติดตามกระบวนการที่กำลังรัน B ที่รันด้วย ID ผู้ใช้เดียวกันกับกระบวนการของ A นั่นคือคุณสามารถกำหนดค่าระบบของคุณเพื่อให้กระบวนการใด ๆ ของคุณเพื่อดีบักซึ่งกันและกัน สิ่งนี้จะช่วยให้การแนบ debuggers ง่ายขึ้นกับกระบวนการที่รันอยู่แล้ว
การตั้งค่าสำหรับการนี้ได้รับการเปิดเผยในโดยsysctl/proc/sys/kernel/yama/ptrace_scope
1
หมายถึงพฤติกรรมที่ จำกัด มากขึ้นและพฤติกรรม0
ที่ จำกัด น้อยลง การตั้งค่าสามารถอ่านได้ด้วย:
cat /proc/sys/kernel/yama/ptrace_scope
พฤติกรรมที่ จำกัด (ไม่ใช่ค่าเริ่มต้น) น้อยสามารถตั้งค่าด้วย:
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
และพฤติกรรมที่เข้มงวดมากขึ้น (เริ่มต้น) สามารถตั้งค่า (หรือตั้งค่ากลับ) ด้วย:
echo 1 | sudo tee /proc/sys/kernel/yama/ptrace_scope
ไม่เพียง แต่เป็นโปสเตอร์เดิมของคำถามนี้ไม่สามารถแนบstrace
อินสแตนซ์ที่จะเป็นกระบวนการที่ทำงานอยู่ในปัจจุบันกับptrace-scope
ชุด0
แต่โปสเตอร์เดิมแล้วก็ยังไม่สามารถทำเช่นนั้นเมื่อทำงานเป็นstrace
root
เป็นการยากที่จะดูว่าสิ่งนี้อาจเป็นอะไรได้นอกจากเป็นข้อบกพร่อง - ฉันขอแนะนำให้รายงานเป็นข้อผิดพลาด
ตอนแรกผมคิดว่าผมสามารถที่จะทำให้เกิดปัญหาที่ptrace_scope
การตั้งค่าจะถูกละเว้นและปฏิบัติราวกับว่ามันเป็น0
1
แต่ฉันไม่เชื่อในกรณีนี้อีกต่อไปเพราะฉันได้ทำสิ่งเดียวกันทั้งหมดอีกครั้งและฉันไม่สามารถสร้างปัญหาขึ้นมาอีกได้ ฉันได้ทดสอบสิ่งนี้เมื่อ:
- เครื่องกายภาพ Lubuntu แม่นยำ amd64 ฉันใช้ทุกวันเป็นกล่องหลักของฉัน
- เครื่องเสมือน VirtualBox ที่ใช้งาน Lub Lub Precise i386 (12.04) ซีดีสด
- เครื่องเสมือน VirtualBox ที่เหมือนกันซึ่งใช้ Quantal i386 (Ubuntu + 1) ทุกวันสด (20120608)
ในทั้งสามเครื่องพฤติกรรมที่คาดไว้เกิดขึ้นและฉันไม่สามารถทำซ้ำเงื่อนไขที่ผู้ลงประกาศดั้งเดิมของคำถามนี้ถาม นี่คือข้อความจากเทอร์มินัล (จากระบบถ่ายทอดสดที่แม่นยำ):
lubuntu@lubuntu:~$ nano&
[1] 3492
lubuntu@lubuntu:~$ strace -p 3492
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
Could not attach to process. If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf
[1]+ Stopped nano
lubuntu@lubuntu:~$ cat /proc/sys/kernel/yama/ptrace_scope
1
lubuntu@lubuntu:~$ echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
0
lubuntu@lubuntu:~$ strace -p 3492
Process 3492 attached - interrupt to quit
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
ioctl(1, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig -icanon -echo ...}) = ? ERESTARTSYS (To be restarted)
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
ioctl(1, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig -icanon -echo ...}) = ? ERESTARTSYS (To be restarted)
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
strace
ยังคงผลิตข้อความต่อไปจนกว่าฉันจะระงับตามที่คาดไว้
ฉันสรุปโดยการแนะนำอีกครั้งเพื่อรายงานปัญหานี้ การค้นหาที่ครอบคลุมมากที่สุดบนhttps://bugs.launchpad.net (ซึ่งรวมถึงข้อบกพร่องของ Ubuntu ที่รายงาน) สำหรับข้อความที่ptrace_scope
สร้างผลลัพธ์เพียงไม่กี่ผลซึ่งไม่มีรายงานใดที่ชัดเจนสำหรับข้อบกพร่องนี้ การรายงานข้อผิดพลาดจะช่วยผู้อื่นอาจนำไปสู่การแก้ไขปัญหาหรือการแก้ไขและอาจเป็นวิธีเดียวที่มีความหมายในการดำเนินการแก้ไขปัญหานี้ต่อไป (สมมติว่าปัญหายังคงเกิดขึ้น)
strace /bin/echo test
? นั่นเป็นข้อความแสดงข้อผิดพลาดเดียวกันหรือไม่?