मैं एक विश्वविद्यालय में सिस्टम प्रशासन के साथ काम करता हूं और बस कुछ के पार ठोकर खाई है जो शायद आम है, लेकिन मेरे लिए काफी झटका था।
सभी public_html निर्देशिकाओं और वेब क्षेत्रों को afs पर संग्रहीत किया जाता है, वेब सर्वर के लिए पढ़ने की अनुमति के साथ। चूंकि उपयोगकर्ताओं को अपने public_html में php स्क्रिप्ट रखने की अनुमति है, इसका मतलब यह है कि वे php (और मुख्य वेब फ़ाइलों!) से एक-दूसरे की फ़ाइलों तक पहुँच सकते हैं।
न केवल यह किसी भी .htaccess पासवर्ड सुरक्षा को पूरी तरह से बेकार कर देता है, यह उपयोगकर्ताओं को mysql डेटाबेस पासवर्ड और समान संवेदनशील जानकारी वाली php स्रोत फ़ाइलों को पढ़ने की भी अनुमति देता है। या यदि वे पाते हैं कि अन्य लोगों की निर्देशिकाएं हैं, जहां वेब सर्वरों की पहुंच है (जैसे व्यक्तिगत लॉग के लिए या सबमिट किए गए फॉर्म डेटा को बचाने के लिए) तो वे उन खातों में फ़ाइलों को संग्रहीत कर सकते हैं।
एक सरल उदाहरण:
<?
header("Content-type: text/plain");
print file_get_contents("/afs/example.com/home/smith/public_html/.htpasswd");
?>
क्या यह एक आम समस्या है? और आप इसे आमतौर पर कैसे हल करते हैं?
अपडेट करें:
इनपुट के लिए धन्यवाद। दुर्भाग्य से, ऐसा लगता है कि कोई सरल जवाब नहीं है। इस तरह के एक बड़े साझा वातावरण में, उपयोगकर्ताओं को संभवतः इसे अधिक विकल्प नहीं दिया जाना चाहिए। सबसे अच्छा तरीका मुझे लगता है कि सभी "public_html" निर्देशिकाओं के लिए मुख्य कॉन्फ़िगरेशन में "open_basedir" सेट करने के लिए है, suphp चलाएं और केवल साफ php (कोई cgi स्क्रिप्ट, बैकटिक्स आदि के साथ बाहरी कमांड चलाने) की अनुमति दें।
इस तरह से नीति में बदलाव करने से बहुत सारी चीजें टूट जाएंगी, और संभवत: उपयोगकर्ताओं को अपने पिचफ़र्क को पकड़ने और हमें पीछा करने के लिए ... मैं अपने सहयोगियों के साथ इस पर चर्चा करूंगा और अगर सेटअप बदलने के तरीके पर निर्णय लेते हैं तो यहां अपडेट करेंगे।
open_basedirउत्पादन साझा होस्टिंग सिस्टम पर नीचे दिए गए समाधान का उपयोग किया है , लेकिन हमने सभी को अपने स्वयं के vhost में विभाजित किया है - यकीन नहीं है कि यह एकल निर्देशिकाओं के लिए काम करता है ...