ทำไม ping ต้องการบิต setuid


คำตอบ:


15

ping ต้องการสร้างและรับแพ็คเก็ต ICMP และโดยปกติแล้วจะทำโดยใช้ "raw sockets" ซึ่งเป็นคุณสมบัติที่ จำกัด เฉพาะ root (cap_net_raw) เพราะมันอาจถูกใช้ในทางที่ผิดเพื่อดมกลิ่นและขัดขวางการรับส่งข้อมูลอื่น ๆ ในระบบ

การกระจายจำนวนมากในขณะนี้เพียงให้ ping สิทธิ์cap_net_raw (ดูcapabilities(7)และgetcap(8)หน้าคู่มือ) แทนที่จะเต็ม setuid รูต อย่างไรก็ตามสิ่งนี้ต้องการทั้งเคอร์เนลและระบบไฟล์เพื่อสนับสนุนแอ็ตทริบิวต์ส่วนขยาย (xattrs) และบางระบบ "ขั้นต่ำ" ปิดใช้งานสิ่งเหล่านี้

นอกจากนี้เมื่อเร็ว ๆ นี้ได้เพิ่มประเภทซ็อกเก็ต "ICMP"พิเศษที่อนุญาตให้ส่งข้อความ ICMP Echo เท่านั้นโดยไม่มีสิทธิ์เพิ่มเติมใด ๆ คำสั่ง ping ยังไม่ได้รับการอัพเดต


ฉันคิดว่าความสามารถ (7) ไม่ได้ใช้ xattrs
ggg

2
@ggg: แต่มันไม่ ลองgetfattr --dump --match=.* /sbin/pingดู
user1686
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.