यहां ज्यादातर जवाब सुरक्षा को ध्यान में रखकर नहीं लिखे गए हैं। यह महसूस करना अच्छा है कि sudoहर बार दौड़ना बहुत बुद्धिमानी नहीं है। यदि आप एक टाइपो बनाते हैं (उदाहरण के लिए एक गलत स्थान पर एकल सफेद स्थान: sudo rm -rf / var/www/dir निष्पादित न करें! ), तो आप अपने सिस्टम को कचरा कर सकते हैं।
नोट: Apache 2.4.7 / Ubuntu 14.04 के साथ शुरू, तदनुसार इस उत्तर में आदेशों /var/wwwको /var/www/htmlसमायोजित करने के लिए ले जाया गया है।
देख:
बुरे विचार:
chmod 777(sagarchalise) - यह आपके सिस्टम के उपयोग के साथ किसी को भी निर्देशिका और फाइलों में लिख सकते हैं और इस तरह घुसपैठिया के तहत किसी भी कोड को निष्पादित करने के लिए अनुमति देता है की अनुमति देता है www-dataउपयोगकर्ता
chgrp -R www-data $HOME(सिल) - यह www-dataहोम डायरेक्टरी में किसी भी फाइल को पढ़ने या लिखने की अनुमति देता है। यह कम से कम लिवर विशेषाधिकार नियम को ध्यान में नहीं रख रहा है
chown -R $USER:$USER /var/www(kv1dr) - जब तक कि दुनिया ने अनुमतियों को नहीं पढ़ा है /var/www, तब तक चलने वाला वेबसर्वर www-dataफाइलों को नहीं पढ़ सकेगा। यदि फ़ाइल सार्वजनिक-सुलभ सादे HTML दस्तावेज़ है, तो यह एक समस्या नहीं हो सकती है यदि दुनिया फ़ाइल को पढ़ सकती है। लेकिन अगर फ़ाइल एक PHP फ़ाइल है जिसमें पासवर्ड है, तो यह है।
नोट : नीचे दिए गए समाधानों में, मैंने लिखित www-dataविशेषाधिकार दिए हैं। हालाँकि, /usr/share/doc/base-passwd/users-and-groups.txt.gzबताता है:
www-डेटा
कुछ वेब सर्वर www-data के रूप में चलते हैं। वेब सामग्री इस उपयोगकर्ता के स्वामित्व में नहीं होनी चाहिए, या एक समझौता किया हुआ वेब सर्वर एक वेब साइट को फिर से लिखने में सक्षम होगा। वेब सर्वर द्वारा लिखित डेटा www-data के स्वामित्व में होगा।
जहां संभव हो, समूह को लेखन अनुमति न दें www-data। www-dataकेवल फ़ाइलों को पढ़ने में सक्षम होने की आवश्यकता है ताकि वेबसर्वर इसे सेवा दे सके। एकमात्र ऐसा मामला जहां www-dataलेखन अनुमतियों की आवश्यकता होती है, वह है निर्देशिकाओं के लिए अपलोड करना और अन्य स्थानों पर जिन्हें लिखा जाना चाहिए।
समाधान 1
अपने आप को www-dataसमूह में जोड़ें और /var/wwwनिर्देशिका पर सेटगिड बिट सेट करें जैसे कि सभी नई बनाई गई फाइलें इस समूह को भी विरासत में मिलती हैं ।
sudo gpasswd -a "$USER" www-data
पहले बनाई गई फ़ाइलों को ठीक करें (मान लें कि आप केवल उपयोगकर्ता हैं /var/www):
sudo chown -R "$USER":www-data /var/www
find /var/www -type f -exec chmod 0660 {} \;
sudo find /var/www -type d -exec chmod 2770 {} \;
(यहां तक कि सुरक्षित: उपयोग 640या 2750मैन्युअल रूप से chmod g+w file-or-dirजो वेबसर्वर द्वारा लिखने योग्य होना चाहिए)
समाधान २
अपने घर निर्देशिका के लिए प्रत्येक परियोजना के लिए एक सिम्लिंक बनाएं। कहते हैं कि आपकी परियोजना यहां स्थित है ~/projects/fooऔर आप चाहते हैं कि यह स्थित हो /var/www/foo, चलाएं:
sudo ln -sT ~/projects/foo /var/www/foo
यदि आपके होम डायरेक्टरी में otherसुरक्षा कारणों के लिए सेट (डिसेंड) नहीं है , तो इसके समूह को बदल दें www-data, लेकिन निष्पादित बिट को केवल सेट करें (कोई पढ़ें / लिखें नहीं)। ~/projectsफ़ोल्डर के लिए भी ऐसा ही करें क्योंकि इसमें www के अलावा अन्य प्रोजेक्ट भी हो सकते हैं। ( sudoयदि आपको पहले अपने उपयोगकर्ता को www-dataसमूह में जोड़ा है तो आपको इसकी आवश्यकता नहीं है ।)
sudo chgrp www-data ~ ~/projects
chmod 710 ~ ~/projects
करने के लिए समूह सेट www-dataपर ~/projects/fooऔर वेब सर्वर पढ़ सकते हैं और फ़ाइलों और फ़ाइलों + निर्देशिकाओं को लिखने और निर्देशिका में उतर करने की अनुमति:
sudo chgrp www-data ~/projects/foo
find ~/projects/foo -type f -exec chmod 660 {} \;
find ~/projects/foo -type d -exec chmod 2770 {} \;
यहां तक कि सुरक्षित: 640 और 2750 का डिफ़ॉल्ट रूप से और मैन्युअल रूप से chmod फ़ाइलों और निर्देशिकाओं का उपयोग करें जो वेबसर्वर उपयोगकर्ता द्वारा लिखने योग्य होने की आवश्यकता है। सेटगिट बिट को केवल तभी जोड़ा जाना चाहिए जब आप चाहते हैं ~/projects/fooकि समूह द्वारा हर नई बनाई गई फ़ाइल सुलभ हो।
अब से, आप अपनी साइट पर पहुँच सकते हैं http://localhost/fooऔर अपनी परियोजना फ़ाइलों को संपादित कर सकते हैं ~/projects/foo।
यह सभी देखें