यूनिक्स सॉकेट्स पर x (निष्पादित) की अनुमति क्या है?


11

मेरे अनुभव से अनपेक्षित उपयोगकर्ता यूनिक्स सॉकेट का उपयोग नहीं कर सकता / सकती है, वह बिना एक्स बिट सेट के खुद का नहीं है। यह बिट वास्तव में क्या करता है? धन्यवाद


क्या यह सॉकेट्स पर या निर्देशिका पर अनुमति है?
रुई एफ रिबेरो

एक सॉकेट पर। निर्देशिका में मोड 0755 है, इसलिए उपयोगकर्ता सामग्री का निरीक्षण कर सकता है। सॉकेट में मोड 0644 है, इसलिए तार्किक रूप से उपयोगकर्ता (जो "अन्य" से संबंधित है क्योंकि वह / उसके पास सॉकेट नहीं है जो समूह के मालिक सॉकेट से संबंधित है) सॉकेट को लिखने में सक्षम होना चाहिए। जब तक कि सॉकेट पर मोड 0777 लागू नहीं हो जाता है, तब तक उपयोगकर्ता को अनुमति से इनकार कर दिया जाता है।
Владимир Тюхтин

2
@ ВладимирТюхтин, का 0644अर्थ है समूह के सदस्यों और "अन्य" के लिए सिर्फ पढ़ने की अनुमति, इसलिए केवल मालिक सॉकेट तक ही जा पाएंगे (क्योंकि लिखित अनुमति इसे नियंत्रित करती है)। 0666, या जैसा 0222कि पढ़ने की अनुमति की आवश्यकता नहीं है, सभी के लिए पहुँच देने के लिए पर्याप्त होगा। लेकिन, सभी को अनुमति देने के बजाय, मैं एक्सेस की अनुमति देने के लिए समूहों का उपयोग करूंगा।
ilkachachu

जवाबों:


9

कुछ नहीं, जैसा कि मैं देख सकता हूं।

लिनक्स आदमी पेज यूनिक्स (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निर्देशिका पर बिट का मतलब था ?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.