Www-data समूह को लेखन अनुमति प्रदान करना


27

मैं एक वेबसाइट बना रहा हूं और फ़ंक्शन का एक हिस्सा php के साथ उपयोगकर्ता द्वारा उत्पन्न डेटा लिखना है। मैं Ubuntu 13.04 पर nginx का उपयोग कर रहा हूं। एक क्षण मैं केवल परीक्षण कर रहा हूं और लोकोहास्ट पर नग्नेक्स के माध्यम से सब कुछ परोसा जाता है।

मेरी php स्क्रिप्ट पाठ फ़ाइल लिखने में विफल रहती है (हालांकि मैं इसे मैन्युअल रूप से कर सकता हूं) और मुझे लगता है कि यह मेरे /var/www/example.com/public_html निर्देशिका में लिखने के लिए अनुमतियों की समस्या है।

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

useradd -G www-data iain
chown -R www-data:www-data /var/www/example.com
chmod 775 /var/www

तो क्या इसका मतलब यह है कि www-data समूह में कोई भी अब / var / www में पढ़, लिख और निष्पादित कर सकता है?

जवाबों:


53

सबसे पहले, useraddएक नया उपयोगकर्ता बनाता है। जैसा कि आप (आईएएन) पहले से मौजूद हैं, आप usermodइसके बजाय कॉल करना चाहते हैं । तो यह होगा:

sudo usermod -aG www-data iain
addgroup www-data

( -aडेबियन-आधारित सर्वर (उबंटू शामिल) पर ध्यान दें जो आपको उस समूह में जोड़ेगा, और अन्य समूहों के लिए अपनी सदस्यता रखेगा। इसे भूल जाइए और आप केवल www-डेटा समूह से संबंधित होंगे - यदि कोई एक बुरा अनुभव हो सकता है उनका पहिया था। SUSE- प्रकार के सर्वर पर विकल्प के -Aबजाय इसे ठीक से -aGपढ़ने के लिए man usermodध्यान से पढ़ें ।

दूसरा, आप नहीं चाहते कि अपाचे के पास पूरी आरडब्ल्यू पहुंच हो /var/www: यह संभावित रूप से एक प्रमुख सुरक्षा उल्लंघन है। एक सामान्य नियम के रूप में, आपको केवल वही चाहिए जो आपको चाहिए, और अधिक कुछ नहीं ( कम से कम विशेषाधिकार का सिद्धांत )। इस मामले में, आपको अपाचे ( www-data) और आप ( www-dataसमूह) को लिखने (और पढ़ने) की आवश्यकता है /var/www/example.com/public_html, इसलिए

sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 770 /var/www/example.com/public_html

संपादित करें : अपने मूल प्रश्न का उत्तर देने के लिए, हां, www-dataअब कोई भी सदस्य पढ़ सकता है और निष्पादित कर सकता है /var/www(क्योंकि आपकी अनुमतियों का अंतिम बिट 5 = पढ़ा + निष्पादन है)। लेकिन क्योंकि आपने -Rस्विच का उपयोग नहीं किया है , जो केवल /var/wwwउन फ़ाइलों और उप-निर्देशिकाओं पर लागू होता है , जिनमें यह शामिल है। अब, क्या वे लिख सकते हैं एक और मामला है, और उस समूह पर निर्भर करता है /var/www, जिसे आपने सेट नहीं किया है। मुझे लगता है कि यह आम तौर पर है root:root, इसलिए नहीं, वे (शायद) नहीं लिख सकते।

2014-06-22 पर संपादित करें : ध्यान दें कि -aGविकल्प डेबियन-आधारित सर्वर पर मान्य है। यह स्पष्ट रूप से वितरण के साथ भिन्न होता है, इसलिए manनिष्पादित करने से पहले ध्यान से पढ़ें ।


ठीक है मैं समझा। / Var / www का समूह वास्तव में मूल है: जड़। लिंक के लिए धन्यवाद। सुविधा के लिए जाने के बजाए जो आवश्यक है उसे देने की आदत में अधिक समझदार लगता है। मार्गदर्शन के लिए धन्यवाद।
डफ

2
ठीक है, इसलिए मैंने सिर्फ /var/www/example.com/public_html के साथ लिखने की कोशिश की है cp -r php /var/www/example.com/public_htmlऔर मुझे अनुमति से इनकार कर दिया गया है। मैं www-data समूह में हूँ, जिसके पास rwxrwx है --- इस dir के लिए अनुमतियाँ। ऐसा क्यों है?
duff

यहां कई चीजें हो सकती हैं। उदाहरण के लिए, आपको php में कुछ चीजों को पढ़ने की अनुमति नहीं हो सकती थी, या आपने लॉग आउट नहीं किया था और बाद में (मैंने इससे बचने के लिए ऐडग्रुप के साथ उस बिंदु पर अपना जवाब अपडेट किया, और सूडो का उपयोग करने के लिए तैयार किया)।
कैलिमो

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