यह मानते हुए कि एक 'वेब एप्लिकेशन' एक सर्वर (जैसे अपाचे, नग्नेक्स, आदि) पर चलता है और कुछ डायनेमिक स्क्रिप्टिंग भाषा (जैसे PHP, रूबी, आदि) में लिखा गया है, आपको यह गलतफहमी है कि 'उपयोगकर्ता' कौन है।
उपयोगकर्ता वह व्यक्ति नहीं है जो आपके आवेदन में लॉग इन किया गया है - और, और अनुप्रयोग (व्यवस्थापक, आदि) में उनकी भूमिका पूरी तरह से परिदृश्य के लिए अप्रासंगिक है। उपयोगकर्ता लिनक्स सिस्टम उपयोगकर्ता है जो प्रक्रिया के तहत चलता है। आपकी वेबसाइट का कोड केवल एक उपयोगकर्ता के रूप में चलाया जाता है - यह आपके वेबसर्वर का उपयोगकर्ता हो सकता है (जो वास्तव में अच्छी बात नहीं है), या यह आपकी साइट के लिए विशिष्ट उपयोगकर्ता हो सकता है (जो बहुत बेहतर है)।
लिनक्स पर, उपयोगकर्ता समूहों से संबंधित होते हैं - हम किसी उपयोगकर्ता को दूसरे समूह में जोड़ सकते हैं और उस समूह को विशेषाधिकार प्रदान कर सकते हैं।
एक अच्छा सेटअप आपके सर्वर को एक उपयोगकर्ता के रूप में चलाएगा (चलो इस उपयोगकर्ता को 'वेबसर्वर' कहते हैं) और आपकी डायनामिक स्क्रिप्टिंग भाषा रन (उदाहरण के लिए FastCGI) अपने स्वयं के उपयोगकर्ता के रूप में (प्रति साइट एक उपयोगकर्ता - चलो हमारे पहले उपयोगकर्ता को 'site1' कहते हैं) ।
आपकी फ़ाइलों की सेवा के लिए, वेबसर्वर को उन तक पहुंच की आवश्यकता होती है, और स्क्रिप्टिंग भाषा को उन तक पहुंच की आवश्यकता होती है। इसका मतलब है: 'site1' और 'webserver' को आपकी फ़ाइलों को पढ़ने में सक्षम होना चाहिए। उनमें से केवल एक, हालांकि फाइलों को 'खुद' कर सकते हैं। स्वामी 'उपयोगकर्ता' (उपयोगकर्ता, समूह, अन्य में) है। हमें अपनी स्क्रिप्टिंग भाषा की भी आवश्यकता है ताकि निर्देशिका को लिखने में सक्षम हो (और जो फाइलें लिखी हैं, उन्हें पढ़ें)। इसलिए उपयोगकर्ता 'साइट 1' को पढ़ने और लिखने की अनुमति चाहिए। चूंकि हम चाहते हैं कि समूह और अन्य अनुमतियाँ यथासंभव प्रतिबंधात्मक हों, हमारा 'स्वामी' 'साइट 1' होगा, और संबंधित उपयोगकर्ता अनुमतियाँ पढ़ी और लिखी जाएंगी।
चूंकि हम अपने वेबसर्वर के लिए किसी अन्य 'उपयोगकर्ता' के रूप में अनुमतियों को निर्दिष्ट नहीं कर सकते हैं, हम 'वेबसर्वर' को 'साइट 1' समूह में जोड़ देंगे (आप निश्चित रूप से, 'साइट 1' और 'वेबसर्वर' दोनों के साथ एक अलग समूह बना सकते हैं।) इस समूह के सदस्यों को एक ही अनुमति दी जाएगी। अपनी अनुमतियों का निर्धारण करने के लिए किसी भी उपयोगकर्ता को सबसे लक्स अनुमतियाँ (उपयोगकर्ता, समूह, अन्य सेट) लागू की जाएंगी।
यह ध्यान देने योग्य है कि एक अच्छे सेटअप को डायनामिक भाषा के लिए फ़ाइलों को निष्पादित करने की आवश्यकता नहीं होनी चाहिए। फाइलें सीधे नहीं चलती हैं, बल्कि एक दुभाषिया में पढ़ी जाती हैं - केवल एक विशिष्ट स्क्रिप्ट को चलाने के लिए केवल पढ़ने की अनुमति की आवश्यकता होती है (वह जो कुछ भी नहीं लिखता है)।
निर्देशिकाओं पर 'निष्पादित' अनुमति का एक अलग अर्थ है - यह सामग्री को पढ़ने में सक्षम होने के बिना ट्रैवर्सल की अनुमति देता है। किसी निर्देशिका में किसी फ़ाइल को पढ़ने में सक्षम होने के लिए, किसी उपयोगकर्ता के पास इसके ऊपर हर निर्देशिका पर 'निष्पादित' अनुमतियाँ होनी चाहिए।
एक वेब एप्लिकेशन के लिए, प्रत्येक फ़ाइल को उसके मालिक द्वारा अनुमतियाँ पढ़नी चाहिए - अन्यथा, यह एक काफी व्यर्थ फ़ाइल है। चाहे कोई उपयोगकर्ता या कोई व्यवस्थापक फ़ाइलें (आपके वेब एप्लिकेशन के माध्यम से) 'स्वामी' (यानी डायनेमिक भाषा) अपलोड अनुमतियाँ लिखता हो। एक कुशल सेटअप वेब सर्वर के माध्यम से सीधे स्थिर फ़ाइलों की सेवा करने का प्रयास करेगा, क्योंकि डायनेमिक भाषाएं बड़ी फ़ाइलों में पढ़ने और सामग्री को गूँजने में धीमी होती हैं। इसलिए वेब सर्वर को आपकी स्थैतिक फ़ाइलों तक पढ़ने की आवश्यकता है।
इसलिए, न्यूनतम फ़ाइल अनुमतियां हो सकती हैं:
- एक निर्देशिका में एक फ़ाइल जहाँ उपयोगकर्ता अपलोड की गई स्थिर फाइलें (चित्र / swf / js फ़ाइलें) निवास करेगा: 640
- निर्देशिका में एक फ़ाइल जहाँ व्यवस्थापक अपलोड की गई स्थिर फ़ाइलें (चित्र / swf / js फ़ाइलें) निवास करेगा: 640
- निर्देशिका में एक फ़ाइल जहाँ अनुप्रयोग में उपयोग किए जाने वाले पुस्तकालय रहते हैं: 400 (या 440)
- निर्देशिका में एक फ़ाइल जहाँ निष्पादन योग्य / ब्राउज़ करने योग्य सर्वर साइड स्क्रिप्ट्स का निवास होगा: 400 (या 440)
- एक निर्देशिका में एक फ़ाइल जहां पहले से मौजूद फ़ाइलें (txt या xml) को सर्वर साइड: 640 या 600 पर कोड द्वारा संपादित किया जाएगा
- (इस बात पर निर्भर करता है कि वेब सर्वर इन्हें कब प्रदर्शित करेगा, अनमॉडिफाइड कई बार)
जबकि, न्यूनतम निर्देशिका अनुमतियां हो सकती हैं:
- एक निर्देशिका जहां उपयोगकर्ता अपलोड की गई स्थिर फाइलें (चित्र / swf / js फ़ाइलें) निवास करेगा: 750
- एक निर्देशिका जहाँ व्यवस्थापक अपलोड की गई स्थिर फाइलें (चित्र / swf / js फ़ाइलें) निवास करेगा: 750
- एक निर्देशिका जहां पुस्तकालयों का उपयोग अनुप्रयोग में होता है: 500 (या 550) [510 होना चाहिए कम से कम]
- एक निर्देशिका जहां निष्पादन योग्य / ब्राउज़ करने योग्य सर्वर साइड स्क्रिप्ट रहते हैं: 500 (या 550) [510 कम से कम होना चाहिए]
- एक निर्देशिका जहां पहले से मौजूद फाइलें (txt या xml) को सर्वर साइड: 750 या 700 पर कोड द्वारा संपादित किया जाएगा
- (यह निर्भर करता है कि वेब सर्वर यहां से फाइलों की सेवा करेगा, कभी-कभी अनमॉडिफाइड)
एक बार फिर से - आपके वेब सर्वर के पास हर उस निर्देशिका के ऊपर 'निष्पादित' अनुमतियाँ होनी चाहिए, जिसके लिए उसे एक्सेस की आवश्यकता होती है - इसलिए भले ही वेब सर्वर किसी दिए गए निर्देशिका से फ़ाइलों की सेवा नहीं करेगा, हमें इसे अनुमति अनुमतियाँ प्रदान करनी चाहिए।
वेब सर्वर को अधिकांश फाइलों तक पहुंच प्रदान करना काफी आम है (इसलिए उन 500 को 550 में बदलें)। डिफ़ॉल्ट 'कुछ हद तक सुरक्षित' अनुमतियाँ आमतौर पर निर्देशिकाओं के लिए 755 और फ़ाइलों के लिए 644 हैं - कोई निष्पादन अनुमतियाँ नहीं, हर कोई पढ़ सकता है, और केवल उपयोगकर्ता लिख सकता है - आप ध्यान देंगे कि किसी लिनक्स सिस्टम पर अधिकांश फ़ाइलों में ये अनुमतियाँ हैं।
ध्यान रखें कि 'अन्य' अनुमतियाँ किसी भी सिस्टम उपयोगकर्ता को संदर्भित करती हैं जो स्वामी या समूह में नहीं है (अर्थात सभी शेष सिस्टम उपयोगकर्ता)। अपनी 'अन्य' अनुमतियों को प्रतिबंधित रखना अच्छा है, क्योंकि ये उपयोगकर्ता अज्ञात हैं - आपने उन्हें स्पष्ट रूप से अनुमति नहीं दी है। अन्य अनुमतियाँ अक्सर एक समझौता प्रणाली पर लाभ उठाने के लिए सबसे आसान होती हैं (उदाहरण के लिए / tmp एक सामान्य लक्ष्य है)।
उपरोक्त के संदर्भ में, मुझे नहीं लगता कि आपके अंतिम दो प्रश्न प्रासंगिक हैं। अपनी निर्देशिका अनुमतियाँ 550 (और फ़ाइल अनुमतियाँ 440) पर सेट करें, और उसके बाद उपयोगकर्ता को अनुमति दें कि आपके एप्लिकेशन को जो भी निर्देशिकाएँ लिखनी हैं (यानी निर्देशिका: 750; फ़ाइल; 640)।
(आपको स्पष्ट रूप से फ़ाइलों को अपलोड करने के लिए लिखने की अनुमति की आवश्यकता होगी - लेकिन यदि आप चाहें, तो आप बाद में उन लोगों को हटा सकते हैं - हालांकि, अगर कोई किसी निर्देशिका को लिख रहा है, जो केवल मालिक ही लिख सकता है - आपके खाते से समझौता कर लिया गया है - जो एक है प्रतिबंधात्मक अनुमति रखने के कारणों का)।