2011-05-12 13 views
7

मैं एक प्रोग्राम है जो एक सॉकेट बनाता है, और फिर मैं सॉकेट फ़ाइल की अनुमतियों को बदलना चाहते हैं:मैं लिनक्स सॉकेट फ़ाइल की अनुमतियों को कैसे बदल सकता हूं?

ret_val = chmod(filename, 0777); 

, लेकिन यह परिवर्तन नहीं करता है, भले ही ret_val 0. हो जाएगा अगर मैं कोशिश एक नियमित फाइल पर एक ही बात, यह काम करता है।

कोई विचार?

पीएस: मैं प्रोग्राम को रूट के रूप में चला रहा हूं, इसलिए इसमें सभी अधिकारों की आवश्यकता है।

+0

जो यूनिक्स संस्करण है? – Alnitak

+0

मुझे भी यह समस्या है। मेरे डेस्कटॉप उबंटू 10.04 पर, निर्देशिका पर 777 पर अनुमतियों को बदलना जहां सॉकेट फ़ाइल स्थित है, चाल है। मेरी टेस्ट मशीन पर एक समान इंस्टॉल (सीन डीवीडी) पर, निर्देशिका की अनुमतियों के बारे में कुछ भी नहीं करता है, जो सॉकेट फ़ाइल की अनुमतियों पर कोई प्रभाव डालता है। ये srwxr-xr-x रहते हैं। मैंने chmod() फ़ंक्शन और सिस्टम() को फ़ाइल परमिट को 777 पर सेट करने के लिए कॉल करने का प्रयास किया। कोई भाग्य नहीं। किसी के पास कोई सुझाव है? –

उत्तर

18

man 7 unix से:

लिनक्स कार्यान्वयन में, सॉकेट जो फाइल सिस्टम में दिखाई दे रहे हैं निर्देशिका वे में हैं की अनुमति का सम्मान उनके मालिक, समूह और उनकी अनुमतियां बदला जा सकता है।। सॉकेट बनने वाली निर्देशिका पर प्रक्रिया लिखने और खोज (निष्पादित) अनुमति नहीं है, तो एक नई सॉकेट का निर्माण विफल हो जाएगा। सॉकेट ऑब्जेक्ट से कनेक्ट करने के लिए पढ़ने/लिखने की अनुमति की आवश्यकता होती है। यह व्यवहार कई बीएसडी-व्युत्पन्न सिस्टमों से को अलग करता है जो यूनिक्स डोमेन सॉकेट के लिए अनुमतियों को अनदेखा करता है। पोर्टेबल कार्यक्रमों को इस सुविधा पर सुरक्षा के लिए भरोसा नहीं करना चाहिए।

तो आप पोर्टेबल होने के लिए एक सॉकेट पर अनुमतियों को नियंत्रित करने के लिए, चाहते हैं, तो आप के बजाय निर्देशिका सॉकेट युक्त अनुमतियों को नियंत्रित करना चाहिए।

+0

@anna lear खराब उत्तर के बारे में क्षमा करें। मेरे फ़ायरफ़ॉक्स ने फैसला किया कि मुझे इस पोस्ट तक पहुंचने की आवश्यकता नहीं है, इसलिए मैं इसे हटा सकता हूं। कीबोर्ड पर कुछ गिरा दिया और इस सुंदर पोस्ट को इनाम के रूप में मिला। तब मैं इसे एक्सेस नहीं कर सका। –

+3

सॉकेट ऑब्जेक्ट पर परमिट को नजरअंदाज करना कचरा है। लिनक्स जाओ! – Kaz

संबंधित मुद्दे