www-डेटा अनुमतियां?


108

इसलिए मेरे पास / var / www (जिसे केक कहा जाता है) में एक निर्देशिका है और मुझे इसे लिखने के लिए www-data को अनुमति देने की आवश्यकता है, लेकिन मैं इसे लिखना भी चाहता हूं (sudo का उपयोग किए बिना)। मेरी मशीन पर कुछ अन्य उपयोगकर्ता (या हैकर) उस निर्देशिका में फ़ाइलों को संशोधित करने का प्रयास करने की स्थिति में 777 अनुमतियों को बदलने से डरते हैं। मैं केवल अपने और अपाचे के www-data तक कैसे पहुँच सकता हूँ?

जवाबों:


168
sudo chown -R yourname:www-data cake

फिर

sudo chmod -R g+s cake

पहले कमांड मालिक और समूह को बदलता है।

दूसरा कमांड एस विशेषता को जोड़ता है जो केक के भीतर नई फ़ाइलों और निर्देशिकाओं को समान समूह अनुमतियाँ रखेगा।


3
चामोद जी + एस पुनरावर्ती क्यों है?
बेन रोजमैन्स

g + s के बारे में नहीं पता था। बहुत बहुत आसान!
FRAGA

1
केक में www-data द्वारा बनाई गई फ़ाइलों के साथ उपयोगकर्ता क्या कर सकता है, और www-data द्वारा बनाई गई फ़ाइलें जो www-data द्वारा बनाई गई हैं? उदाहरण के लिए, संपादन, नाम बदलने, संचालन को हटाने के बारे में? जैसा कि मैं समझता हूं, www-data द्वारा बनाई गई डायरेक्टरी के अंदर नाम बदलना और हटाना संभव नहीं है, और www-data द्वारा क्रेज की गई फाइलों का संपादन उपयोगकर्ता के लिए बिल्कुल भी संभव नहीं है।
13

49

जैसा कि स्लाइसहोस्ट के एक लेख में कहा गया है :

उपयोगकर्ता सेटअप

तो आइए मुख्य उपयोगकर्ता को Apache उपयोगकर्ता समूह में जोड़कर शुरू करते हैं:

sudo usermod -a -G www-data demo

यह उपयोगकर्ता 'डेमो' को 'www-data' समूह में जोड़ता है। सुनिश्चित करें कि आप ऊपर दिखाए गए usermod कमांड के साथ -a और -G दोनों विकल्पों का उपयोग करते हैं।

समूह परिवर्तन को सक्षम करने के लिए आपको फिर से लॉग आउट और लॉग इन करना होगा।

अब समूहों की जाँच करें:

groups
...
# demo www-data

इसलिए अब मैं दो समूहों का सदस्य हूं: मेरा अपना (डेमो) और अपाचे समूह (www-data)।

फ़ोल्डर सेटअप

अब हमें यह सुनिश्चित करने की आवश्यकता है कि public_html फ़ोल्डर मुख्य उपयोगकर्ता (डेमो) के स्वामित्व में है और यह Apache group (www-data) का हिस्सा है।

चलो सेट अप करें:

sudo chgrp -R www-data /home/demo/public_html

जैसा कि हम अनुमतियों के बारे में बात कर रहे हैं, मैं सूडो कमांड के बारे में एक त्वरित नोट जोड़ूंगा: यह पूर्ण पथ (/ होम / डेमो / public_html) का उपयोग करने के लिए एक अच्छी आदत है जैसा कि ऊपर दिए गए सापेक्ष पथ (~ / public_html) के बजाय ऊपर दिखाया गया है। यह सुनिश्चित करता है कि सुडो का उपयोग सही स्थान पर किया जा रहा है।

यदि आपके पास एक सार्वजनिक_एचटीएमएल फ़ोल्डर है जिसके स्थान पर सिमलिंक हैं तो उस कमांड से सावधान रहें क्योंकि यह सिम्बलिंक्स का पालन करेगा। काम कर रहे public_html फ़ोल्डर के उन मामलों में, प्रत्येक फ़ोल्डर को हाथ से बदलें।

Setgid

अब तक अच्छा है, लेकिन याद रखें कि हमने अभी जो कमांड दिया है वह केवल मौजूदा फ़ोल्डरों को प्रभावित करता है। क्या कुछ नया है?

हम स्वामित्व सेट कर सकते हैं इसलिए कुछ भी नया 'www-data' समूह में है।

पहला आदेश public_html निर्देशिका के लिए "सेटगिड" बिट को शामिल करने के लिए अनुमतियों को बदल देगा:

sudo chmod 2750 /home/demo/public_html

यह सुनिश्चित करेगा कि किसी भी नई फाइल को समूह 'www-data' दिया जाए। यदि आपके पास उपनिर्देशिकाएँ हैं, तो आप प्रत्येक उपनिर्देशिका के लिए उस कमांड को चलाना चाहेंगे (इस प्रकार की अनुमति '-R' के साथ काम नहीं करती है)। सौभाग्य से नए उपनिर्देशिकाएँ स्वचालित रूप से 'सेटगिड' बिट सेट के साथ बनाई जाएंगी।

यदि हमें उदाहरण के लिए अपलोड निर्देशिका में अपाचे तक लिखने की अनुमति देने की आवश्यकता है, तो उस निर्देशिका के लिए अनुमतियाँ सेट करें जैसे:

sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads

अनुमतियों को केवल एक बार सेट करने की आवश्यकता होती है क्योंकि नई फाइलें स्वचालित रूप से सही स्वामित्व सौंपी जाएंगी।


यह समाधान मेरे लिए काम करता है। इससे पहले, मैं हमेशा रूट उपयोगकर्ता का उपयोग करके टर्मिनल से सर्वर चलाता हूं। इस समाधान के साथ, मैं फ़ाइल को निर्देशिका में अपलोड कर सकता हूं जिसकी अनुमति 770 है। यह बहुत बढ़िया है, क्योंकि इससे पहले मैं केवल 777 अनुमति का उपयोग करके फ़ाइल अपलोड कर सकता हूं।
इयान इकबाल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.