पिंग को सेटुइट बिट की आवश्यकता क्यों है?


9

रास्पबेरी पाई के लिए जेसी संस्करण में, सेट करने के pingलिए setuidबिट की आवश्यकता होती है । इसके लिए तर्क क्या है?

जवाबों:


15

पिंग को ICMP पैकेट बनाने और प्राप्त करने की आवश्यकता होती है, और आमतौर पर यह "कच्चे सॉकेट्स" का उपयोग करके किया जाता है - रूट (cap_net_raw) तक सीमित एक सुविधा क्योंकि यह सिस्टम पर अन्य ट्रैफ़िक को सूँघने और बाधित करने के लिए दुर्व्यवहार भी हो सकता है।

कई वितरण अब केवल पूर्ण setuid रूट के बजाय cap_net_raw विशेषाधिकार (देखें capabilities(7)और getcap(8)मैनुअल पृष्ठ) पिंग देते हैं । हालांकि इसे विस्तारित विशेषताओं (xattrs) का समर्थन करने के लिए कर्नेल और फाइल सिस्टम दोनों की आवश्यकता होती है, और कुछ "न्यूनतम" सिस्टम उन को अक्षम करते हैं।

इसके अलावा, हाल ही में एक विशेष "आईसीएमपी" सॉकेट प्रकार जोड़ा गया जो बिना किसी अतिरिक्त विशेषाधिकार के केवल आईसीएमपी इको संदेश भेजने की अनुमति देता है। पिंग कमांड को इसके लिए अभी तक अपडेट नहीं किया गया है।


मुझे लगता है कि क्षमताएं (7) xattrs का उपयोग नहीं करती हैं।
ggg

2
@ भिक: लेकिन यह करता है। कोशिश करो getfattr --dump --match=.* /sbin/ping
user1686
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.