अद्यतन सारांश
/ Var / www निर्देशिका का स्वामित्व है root:root
जिसका अर्थ है कि कोई भी इसका उपयोग नहीं कर सकता है और यह पूरी तरह से बेकार है। चूंकि हम सभी एक वेब सर्वर चाहते हैं जो वास्तव में काम करता है (और कोई भी "रूट" के रूप में लॉगिंग नहीं होना चाहिए), तो हमें इसे ठीक करने की आवश्यकता है।
केवल दो संस्थाओं तक पहुंच की आवश्यकता है।
PHP / पर्ल / रूबी / पायथन सभी को फ़ोल्डर्स और फ़ाइलों तक पहुंच की आवश्यकता होती है क्योंकि वे उनमें से कई (यानी
/uploads/
) बनाते हैं । ये स्क्रिप्टिंग भाषाएं नेगनेक्स या अपाचे (या PHP के लिए FastCGI जैसी कुछ अन्य चीज़ों) के तहत चल रही होनी चाहिए।डेवलपर्स
उनकी पहुँच कैसे हो? मुझे पता है कि किसी ने , पहले भी ऐसा किया है। हालाँकि, कई-कई अरबों वेबसाइट्स के बारे में आपको लगता है कि इस विषय पर अधिक जानकारी होगी।
मुझे पता है कि 777 पूर्ण पढ़ा / लिखा / मालिक / समूह / अन्य के लिए अनुमति निष्पादित है। तो यह सही होने की जरूरत नहीं लगती क्योंकि यह यादृच्छिक उपयोगकर्ताओं को पूर्ण अनुमति देता है।
किन अनुमतियों का उपयोग करने की आवश्यकता है /var/www
ताकि:
- स्रोत नियंत्रण जैसे git या svn
- "वेबसाइट" जैसे समूह में उपयोगकर्ता ( या "www-data" में भी जोड़े गए )
- अपाचे या लाइटवेट जैसे सर्वर
- और PHP / पर्ल / रूबी
क्या सभी वहां फ़ाइलें (और निर्देशिका) पढ़ सकते हैं, बना सकते हैं और चला सकते हैं?
यदि मैं सही हूं, तो रूबी और PHP स्क्रिप्ट सीधे "निष्पादित" नहीं होती हैं - लेकिन एक दुभाषिया के पास। तो /var/www
... में फ़ाइलों पर अनुमति निष्पादित करने की कोई आवश्यकता नहीं है ...? इसलिए, ऐसा लगता है कि सही अनुमति होगी chmod -R 1660
जो बनायेगी
- सभी फ़ाइलें इन चार संस्थाओं द्वारा साझा की जाती हैं
- सभी फाइलें गैर-निष्पादन योग्य गलती से
- पूरी तरह से निर्देशिका से बाकी सभी को ब्लॉक करें
- सभी भविष्य की फ़ाइलों के लिए "स्टिकी" के लिए अनुमति मोड सेट करें
क्या ये सही है?
अद्यतन 1: मुझे अभी पता चला है कि फ़ाइलों और निर्देशिकाओं को अलग-अलग अनुमतियों की आवश्यकता हो सकती है - मैं ऊपर फ़ाइलों के बारे में बात कर रहा था, इसलिए मुझे यकीन नहीं है कि निर्देशिका अनुमतियों की क्या आवश्यकता होगी।
अद्यतन 2:/var/www
ऊपर की चार संस्थाओं में से एक के रूप में बड़े पैमाने पर परिवर्तनों की फ़ोल्डर संरचना हमेशा (और कभी-कभी हटाने वाले) फ़ोल्डरों और उप फ़ोल्डरों के स्तरों को गहरा जोड़ रही है। वे उन फ़ाइलों को भी बनाते और निकालते हैं जिन्हें अन्य 3 संस्थाओं को पढ़ने / लिखने की पहुँच की आवश्यकता हो सकती है। इसलिए, फ़ाइलों और निर्देशिकाओं दोनों के लिए अनुमतियों को ऊपर की चार चीज़ों को करने की आवश्यकता है। चूंकि उनमें से किसी को भी अनुमति निष्पादित करने की आवश्यकता नहीं है (ऊपर माणिक / php के बारे में प्रश्न देखें) मुझे लगता है कि rw-rw-r--
अनुमति सभी आवश्यक है और पूरी तरह से सुरक्षित होगी क्योंकि ये चार संस्थाएं विश्वसनीय कर्मियों द्वारा चलाए जाते हैं (# 2 देखें) और सभी अन्य उपयोगकर्ता सिस्टम केवल पढ़ने की पहुंच है।
अद्यतन 3: यह व्यक्तिगत विकास मशीनों और निजी कंपनी के सर्वरों के लिए है। साझा होस्ट की तरह कोई यादृच्छिक "वेब ग्राहक" नहीं।
अपडेट 4: स्लाइसहोस्ट का यह लेख यह समझाने में सबसे अच्छा लगता है कि आपके www फ़ोल्डर के लिए सेटअप अनुमतियों की क्या आवश्यकता है। हालाँकि, मुझे यकीन नहीं है कि PHP या svn / git के साथ उपयोगकर्ता या समूह अपाचे / nginx को कैसे और कैसे उन्हें बदलना है।
अपडेट 5: मेरे पास (मुझे लगता है) आखिरकार यह सब काम करने का एक तरीका मिल गया (नीचे उत्तर)। हालाँकि, मुझे नहीं पता कि क्या यह सही और सुरक्षित तरीका है। इसलिए मैंने एक इनाम शुरू किया है। जिस व्यक्ति के पास www निर्देशिका को हासिल करने और प्रबंधित करने का सबसे अच्छा तरीका है वह जीतता है।