NGinx और PHP किस उपयोगकर्ता के रूप में चलना चाहिए?


15

अनुमतियाँ कुछ ऐसी हैं जो लिनक्स के साथ थोड़ी देर के लिए भ्रमित हो गईं। इसलिए मिनट में मेरे NGINx और PHP-FPM दोनों उदाहरण उपयोगकर्ता और समूह के साथ चल रहे हैं:

www-डेटा

क्या यह मानक है? जब मैं फ़ाइल अपलोड करने के दौरान आता हूं तो मैं परेशानी में पड़ जाता हूं।

उदाहरण के लिए , एक फ़ाइल को उपयोगकर्ता और समूह www-data दोनों के साथ अपलोड किया जाएगा। अब, मैं अपने वेब एप्लिकेशन में अनुमति (0440) कैसे सेट करता हूं, उन फाइलों को डाउनलोड करने के लिए मैं अपने सामान्य खाते से ssh के माध्यम से लॉगिन नहीं कर सकता। इसे बदला नहीं जा सकता।

मैं समूह रखने के लिए अपना नगनेक्स और php उदाहरण बदलने के बारे में सोच रहा था, लेकिन उन्हें अपने उपयोगकर्ता नाम के तहत चलाने के लिए बदल दिया।

यहां अनुमतियों को संभालने का सही तरीका क्या है? धन्यवाद।

जवाबों:


12

यह इस प्रकार काम करता है: जब आप एफ़टीपी / एसएसएच के माध्यम से लॉगिन करते हैं और फाइलें अपलोड करते हैं, तो वे आपकी अनुमति से बनाए जाते हैं। संभवत: आपका वेबरोट विश्व लेखन योग्य है (0777), जो असुरक्षित है - सिस्टम का प्रत्येक उपयोगकर्ता वहां कुछ लिख सकता है। PHP अलग-अलग उपयोगकर्ता विशेषाधिकारों के साथ चलता है (वे PHP-FPM कॉन्फिगरेशन में निर्दिष्ट होते हैं, नगीनैक्स कॉन्फिगर नहीं), और जैसा कि डायरेक्टरी विश्व के लिए उपयुक्त है, PHP यूजर (www-data) भी वहां लिख सकते हैं। लेकिन इस फ़ाइल का स्वामी www-data है, न कि आपका खाता। वे फाइलसिस्टम अनुमति स्तर में 2 अलग-अलग खाते हैं।

मैं आपको सुझाव देता हूं कि आप कम से कम संभव विशेषाधिकारों के साथ समर्पित उपयोगकर्ता बनाएं, जो वेबरॉट निर्देशिका का मालिक होगा और इसका उपयोग एफ़टीपी / एसएसएच अपलोड और php चलाने के लिए किया जाएगा। आपको PHP-FPM कॉन्फिगर को बदलना चाहिए, वर्कर सेक्शन में यूजर एंट्री और NGINX कॉन्फिगर हैं, जिससे आप अपनी वेबसाइट की फाइल्स को दुनिया-पढ़ने योग्य और अधिक सुरक्षित नहीं बना सकते हैं।

विशेषाधिकार प्राप्त (sudo capablities के साथ PHP को न चलाएं, विशेषाधिकारों को लिखें docroot) उपयोगकर्ता, जो सर्वर सर्वर समझौता का कारण बन सकता है।


1
अच्छा जवाब, मैंने एक नया उपयोगकर्ता बनाया, नए फ़ोल्डर्स, सब कुछ कॉपी किया, सही अनुमतियों को लागू किया और उपयोगकर्ता को काट दिया। अच्छी तरह से काम करता है। धन्यवाद।
पिक्सेल डेवलपर

क्या मैं केवल www-dataसमर्पित उपयोगकर्ता बनाने के बजाय अपने FTP उपयोगकर्ता को समूह में जोड़ सकता हूं ? क्या यह @PixelDeveloper के मुद्दे को हल करता है? धन्यवाद।
व्लादिस्लाव तुरक

2

www-dataउपयोगकर्ता और समूह काफी मानक हैं। यह अन्य प्रणालियों पर www या वेब हो सकता है लेकिन विचार समान है: समर्पित सेवाओं के साथ वेब सेवाओं को चलाएं। इस प्रकार, जब आपके वेब सर्वर से समझौता किया जाता है, तो हमलावर केवल उन फाइलों तक ही पहुंच सकेगा, जिन्हें यह खाता प्रदान किया गया है।

यदि किसी उपयोगकर्ता को वेब सेवाओं का प्रबंधन करना है, तो आपको उपयोगकर्ता को संबंधित समूह (www-data) में जोड़ना चाहिए या उसे संबंधित उपयोगकर्ता (अभी भी www-data) पर su (या sudo) की अनुमति देनी चाहिए।


10
Www-data का कारण यह है कि यह शून्य विशेषाधिकारों वाला एक खाता है - यह संपूर्ण फ़ाइल सिस्टम पर किसी भी फ़ाइल को नहीं लिख सकता है, लेकिन कुछ भी नहीं बल्कि दुनिया-पढ़ने योग्य फ़ाइलों को पढ़ा जा सकता है। पहले, आप इसे प्राप्त करने के लिए अंतर्निहित उपयोगकर्ता "कोई नहीं" का उपयोग करेंगे। हालाँकि, "www-data" बनाने से आपको उन फ़ाइलों को विश्वस्तरीय (जो खराब है) बनाने के लिए इस उपयोगकर्ता को कुछ फ़ाइलों को लिखने की अनुमति देने की संभावना है । मूल सिद्धांत, कि "www-data" हर दूसरे तरीके से "कोई नहीं" के रूप में विशेषाधिकार प्राप्त है, सच है।
थोमसट्रेटर

@thomasrutter, जो मैं समझता हूं, मुझे www-डेटा समूह में www-डेटा उपयोगकर्ता के तहत Nginx और PHP-FPM चलाना चाहिए। अगर मैं चाहता हूं कि यह उपयोगकर्ता कुछ फ़ोल्डर में read& के writeलिए सक्षम हो , तो मुझे उसे उचित अनुमति देने की आवश्यकता है। ज्यादातर मामलों में, यह वेब रूट फ़ोल्डर /var/www/htmlऔर 755अनुमति होगी। क्या मैं सही हू? धन्यवाद!
व्लादिस्लाव तुरक

1

मैं सुरक्षा कारणों से www-data के रूप में स्वामित्व वाली nginx / php निष्पादित स्क्रिप्ट से बचने की कोशिश करता हूं।


9
क्या आप उस पर विस्तृत चर्चा करेंगे?
करूसल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.