कुछ नहीं, जैसा कि मैं देख सकता हूं।
लिनक्स आदमी पेज यूनिक्स (7) का कहना है कि एक सॉकेट युक्त निर्देशिका की अनुमतियों को सामान्य रूप से लागू होते हैं (यानी आप की जरूरत +x
पर /foo
से कनेक्ट करने /foo/sock
और, +w
पर /foo
बनाने के लिए /foo/sock
) और कहा कि लिखने की अनुमति सॉकेट खुद से कनेक्ट करने के नियंत्रण:
लिनक्स पर, एक स्ट्रीम सॉकेट ऑब्जेक्ट से कनेक्ट करने के लिए उस सॉकेट पर लिखने की अनुमति की आवश्यकता होती है; डेटाग्राम सॉकेट को डेटाग्राम भेजना उसी तरह उस सॉकेट पर लिखने की अनुमति की आवश्यकता है।
जाहिरा तौर पर कुछ अन्य प्रणालियाँ अलग तरह से व्यवहार करती हैं:
POSIX किसी सॉकेट फ़ाइल पर अनुमतियों के प्रभाव के बारे में कोई बयान नहीं देता है, और कुछ प्रणालियों (जैसे, पुराने BSDs) पर, सॉकेट अनुमतियों को अनदेखा किया जाता है। सुरक्षा के लिए पोर्टेबल कार्यक्रमों को इस सुविधा पर भरोसा नहीं करना चाहिए।
unix(4)
FreeBSD पर समान आवश्यकताओं का वर्णन करता है। लिनक्स मैन पेज ने यह नहीं कहा है कि कुछ सिस्टम पर सॉकेट एक्सेस निर्देशिका अनुमतियों को भी अनदेखा करता है।
x
सॉकेट से बिट को हटाने से सॉकेट को निष्पादित करने की कोशिश करने के लिए एक अलग त्रुटि देने का प्रभाव पड़ता है, लेकिन यह एक व्यावहारिक अंतर नहीं है:
$ ls -l test.sock
srwxr-xr-x 1 user user 0 Jun 28 16:24 test.sock=
$ nc -U ./test.sock
Hello
$ ./test.sock
bash: ./test.sock: No such device or address
$ chmod a-x test.sock
$ nc -U ./test.sock
Hello
$ ./test.sock
bash: ./test.sock: Permission denied
(मैंने यह भी परीक्षण किया कि वास्तव में w
डेबियन के लिनक्स 4.9.0 पर सॉकेट तक पहुंचने के लिए केवल बिट ही मायने रखता है।)
शायद आपके द्वारा लिए गए सॉकेट्स में उपयोगकर्ता से सभी अनुमति बिट्स हटा दिए गए थे, या आप x
निर्देशिका पर बिट का मतलब था ?