मैं Ubuntu 16.04 पर UWSGI और Nginx के साथ Django अनुप्रयोगों की सेवा कैसे कर रहा हूं । लेख में "यूडब्ल्यूएसजीआई के लिए एक सिस्टमड यूनिट फ़ाइल बनाएँ" के अंत में वे www-data
उपयोगकर्ता पर चर्चा करते हैं । यह क्या है और यह क्यों महत्वपूर्ण है?
मैं Ubuntu 16.04 पर UWSGI और Nginx के साथ Django अनुप्रयोगों की सेवा कैसे कर रहा हूं । लेख में "यूडब्ल्यूएसजीआई के लिए एक सिस्टमड यूनिट फ़ाइल बनाएँ" के अंत में वे www-data
उपयोगकर्ता पर चर्चा करते हैं । यह क्या है और यह क्यों महत्वपूर्ण है?
जवाबों:
सुरक्षा के लिए।
फ़ाइलें विश्व लेखन योग्य नहीं हैं। वे लिखने के लिए फाइलों के मालिक तक ही सीमित हैं।
वेब सर्वर को एक विशिष्ट उपयोगकर्ता के तहत चलाया जाना है। वह उपयोगकर्ता मौजूद होना चाहिए।
यदि इसे रूट के तहत चलाया गया था, तो सभी फ़ाइलों को रूट द्वारा एक्सेस करना होगा और फ़ाइलों को एक्सेस करने के लिए उपयोगकर्ता को रूट करना होगा। रूट के मालिक होने के साथ, एक समझौता किया हुआ वेब सर्वर आपके पूरे सिस्टम तक पहुंच प्राप्त करेगा। एक विशिष्ट आईडी निर्दिष्ट करके एक समझौता किया हुआ वेब सर्वर केवल उसकी फाइलों तक पूरी पहुंच रखेगा और संपूर्ण सर्वर नहीं।
यदि आप इसे एक अलग उपयोगकर्ता आईडी के तहत चलाने का निर्णय लेते हैं, तो उस उपयोगकर्ता को उचित विशेषाधिकारों के लिए फाइलों का प्रभावी स्वामी होने की आवश्यकता होगी। आपके व्यक्तिगत खाते में सिस्टम-वाइड फ़ाइलों का व्यक्तिगत स्वामित्व होना भ्रामक हो सकता है।
एक विशिष्ट उपयोगकर्ता बनाने से फ़ाइलों को पहचानना आसान हो जाता है और यह पहचानने में संगत होती है कि कौन सी आईडी chown
नई फ़ाइलों और फ़ोल्डरों को साइट पर जोड़े।
प्रयोक्ता आईडी या नाम के मालिक की बात नहीं है। जो भी चुना या तय किया गया है उसे वेब सर्वर कॉन्फ़िगरेशन फ़ाइलों में कॉन्फ़िगर करना होगा।
डिफ़ॉल्ट रूप से स्वामी का www-data
कॉन्फ़िगरेशन Apache2 के Ubuntu कॉन्फ़िगरेशन में है। चूंकि यह डिफ़ॉल्ट कॉन्फ़िगरेशन है, आप आसानी से अपनी वेब फ़ाइलों के लिए आवश्यक स्वामित्व जानते हैं। यदि आप इसे बदलते हैं, तो आपको मिलान करने के लिए अपनी साइट की फ़ाइलों को बदलना होगा।
मैं Nginx नहीं चलाता , लेकिन चूंकि यह Ubuntu रिपॉजिटरी में है, मुझे यकीन है कि इसे www-data
कॉन्फ़िगरेशन के साथ डिफ़ॉल्ट रूप से परीक्षण किया गया है ।
www-data
। यही कारण है कि आपके प्रश्न के अनुसार, उन्होंने आपको उपयोगकर्ताआईडी और समूह बनाने के लिए कहा था यदि यह मौजूद नहीं है। Apache2 स्थापना स्वचालित रूप से उपयोगकर्ता बनाता है। मैं Nqinx के बारे में निश्चित नहीं हूं । आप अगर यह के साथ मौजूद हैं देखने के लिए जाँच कर सकते हैं: iid -u www-data&&id -g www-data
। यदि यह मौजूद है तो यह आपको उपयोगकर्ता और समूह की आईडी संख्या दिखाएगा। उबंटू पर डिफ़ॉल्ट रूप से उपयोगकर्ता और समूह संख्याएँ हैं 33
।
www-data
मालिक के रूप में डाल देना भी एक सुरक्षा जोखिम हो सकता है जैसा कि base-passwd
प्रलेखन में उल्लिखित है (@ muru का जवाब देखें), क्योंकि मालिक आमतौर पर सभी वेब-सेवारत सामग्री तक पहुंच / लिखते हैं। आप www-data
स्वामी के लिए लेखन पहुँच को निकाल सकते हैं, या किसी भिन्न स्वामी का उपयोग कर सकते हैं। www-data
निश्चित रूप से सेवा करने के लिए सभी डेटा तक रीड-एक्सेस की आवश्यकता होती है, लेकिन यदि आप केवल प्रत्येक फ़ाइल और निर्देशिका के लिए आवश्यक अनुमतियाँ देते हैं, और अधिक नहीं, तो आप अधिक सुरक्षित होंगे।
www-data
वह उपयोगकर्ता है जो सामान्य ऑपरेशन के लिए डिफ़ॉल्ट रूप से Ubuntu (Apache, nginx, उदाहरण के लिए) पर वेब सर्वर का उपयोग करता है। वेब सर्वर प्रक्रिया किसी भी फाइल www-data
को एक्सेस कर सकती है जो एक्सेस कर सकती है। इसका कोई अन्य महत्व नहीं है।
से base-passwd
प्रलेखन ( /usr/share/doc/base-passwd/users-and-groups.txt.gz
):
कुछ वेब सर्वर www-data के रूप में चलते हैं। वेब सामग्री इस उपयोगकर्ता के स्वामित्व में नहीं होनी चाहिए, या एक समझौता किया हुआ वेब सर्वर एक वेब साइट को फिर से लिखने में सक्षम होगा। वेब सर्वर द्वारा लिखित डेटा www-data के स्वामित्व में होगा।
base-passwd
के लिए कि डॉक्स
www-data
उपयोगकर्ता (और यह भी समूह) है कि सेवा httpd (Apache) आपके सिस्टम पर कार्य कर रही है।