अधिकांश उत्तर बिल्कुल सही या विस्तृत नहीं होते हैं ... safe_mode
को न भूलें यदि SCRIPT का स्वामी उस फ़ाइल के स्वामी से मेल खाता है जिसे आप एक्सेस करना चाहते हैं। Httpd उपयोगकर्ता: समूह के साथ इसका कोई लेना-देना नहीं है।
उदाहरण के लिए, आपका httpd apache: daemon
के रूप में चलाया जा सकता है, आपकी स्क्रिप्ट some_user: users
और जिस फ़ाइल को आप लिखना चाहते हैं some_other_user: users
।
यदि आप safe_mode_gid
को सक्रिय नहीं करते हैं, तो स्क्रिप्ट फ़ाइल तक पहुंच नहीं पाएगी क्योंकि उपयोगकर्ता मेल नहीं खाते हैं।
यह एक आम घटना है जब एक स्क्रिप्ट एक फ़ोल्डर बनाता है और फिर इस फ़ोल्डर के अंदर फ़ाइलों को बनाने की कोशिश करता है।
फ़ोल्डर निर्माण सफल होता है क्योंकि मूल फ़ोल्डर का स्वामित्व उसी उपयोगकर्ता द्वारा किया जाता है जैसे स्क्रिप्ट इसे बनाते हैं (अधिकतर, इसे "some_user" द्वारा अपलोड किया गया था)।
BUT, the created folder is now owned by the httpd user, let's say apache:daemon
यदि safe_mode
सक्रिय है, तो आप इस फ़ोल्डर के अंदर एक फ़ाइल बनाने में सक्षम नहीं होंगे क्योंकि स्क्रिप्ट स्वामी ( some_user
) फ़ोल्डर स्वामी से मेल नहीं खाता है ( अपाचे
)।
यहां तक कि यदि आप safe_mode_gid
को सक्रिय करते हैं, तो यह काम नहीं करेगा क्योंकि स्क्रिप्ट समूह "उपयोगकर्ता" है जबकि फ़ोल्डर समूह "डेमन" है।
सबसे अच्छा समाधान एक ही समूह को ftp उपयोगकर्ताओं और httpd के लिए सेट करना है।
भूलें कि आपको "लिखने योग्य" फ़ोल्डर पर भी समूह तक पहुंच पहुंचने की अनुमति देना है, और यह कम सुरक्षित है क्योंकि चूंकि आपके सभी उपयोगकर्ता एक ही समूह में हैं, इसलिए httpD प्रक्रिया अन्य उपयोगकर्ता फ़ाइलों तक पहुंच सकती है जब आप सक्रिय करते हैं < कोड> safe_mode_gid ।
आपको वास्तव में safe_mode_gid
+ open_basedir
को गठबंधन करना चाहिए और इसे से बचने के लिए उपयोगकर्ता का घर open_basedire
मान के रूप में सेट करना चाहिए।
HTH