मैं एक तकनीकी समाधान के साथ rahmu और MV के उत्तरों को पूरा करूंगा। जो कुछ भी अनुसरण करता है वह UNIX- जैसी प्रणालियों के लिए ही मान्य है।
ACLs का उपयोग करके उदाहरण के लिए chmod / chown सेक्शन को स्क्रॉल करें - UNIX फ़ाइल मोड से अधिक शक्तिशाली टूल।
अपना वेब सर्वर उपयोगकर्ता नाम ढूँढना
सबसे पहले, आपको उस उपयोगकर्ता नाम को जानना होगा जिसके तहत आपका वेब सर्वर चलता है। यदि आप अपाचे का उपयोग कर रहे हैं, तो यह apache
या , आदि हो सकता है httpd
, www-data
अधिकांश डेबियन जैसी प्रणालियों पर, अपाचे है www-data
। नग्नेक्स के लिए, आम तौर पर, यह भी है www-data
।
इसे जांचने के लिए, प्रयास करें:
ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1
सुनिश्चित करें कि यह कमांड रिटर्न उपयोगकर्ता नाम सुसंगत है (उदाहरण के लिए, मैं 99% nginx समय का उपयोग करता हूं, लेकिन यह कमांड रिटर्न tomcat7
, एक जावा वेब सर्वर जिसे मैंने एक बार स्थापित किया है) ।
वेब सर्वर को अनुमति देना: उपयोग करना chmod
औरchown
एक कर chmod
के 666 या 777 (बुरा दस्तावेजों / ट्यूटोरियल में समस्याओं उस तरह के लिए जाने के लिए समाधान) जादुई चीजें काम कर सकते हैं, लेकिन असुरक्षित है। 666 या 777 अनुमतियाँ देने से "अन्य" तक पहुँच मिलेगी। इसलिए न केवल अपाचे, बल्कि यह भी grandmother
और nsa
(बशर्ते कि वे उपयोगकर्ता खाते आपकी मशीन पर मौजूद हों - लेकिन वास्तव में, कृपया ऐसा करने से बचें जब तक कि यह केवल परीक्षण / समस्या निवारण के लिए न हो)।
अधिक विशिष्ट होना बेहतर है और आप और अपाचे को अनुमति दें। वेब सर्वर पर अपनी फ़ाइलों पर पूर्ण नियंत्रण देने के लिए अपनी फ़ाइलों के समूह को बदलें। ऐसा करने के लिए, स्वामी को पुनरावर्ती रूप से बदलें:
chown -R www-data:www-data your/folder/
लेकिन सबसे अधिक संभावना है, आप केवल समूह को बदलकर अपनी फ़ाइलों पर पूर्ण पहुंच रखना चाहते हैं:
chown -R yourusername:www-data your/folder/
फिर, chmod
समूह www-data
को आपके समान अनुमतियाँ देने के लिए उपयुक्त कार्य करें । उदाहरण के लिए, यदि वर्तमान मोड 640 (आपके लिए 6, www-डेटा के लिए 4, दूसरों के लिए 0, -rw-r -----) का अनुवाद है , तो इसे 660 पर सेट करें (6 आप के लिए, 6 www के लिए- डेटा, दूसरों के लिए, अनुवाद करने के लिए -rw-rw ----) । फ़ाइल मोड के बारे में अधिक जानने के लिए rahmu का उत्तर देखें, यह एक पुराना, लेकिन सुरुचिपूर्ण तंत्र है।
के साथ रहस्यमय संख्या में हेरफेर से बचने के लिए chmod
, आप इस वाक्यविन्यास का उपयोग कर सकते हैं:
chmod -R g+rw your/folder/
इसका अर्थ है "समूह में ( g
), जोड़ने ( +
) पढ़ने और लिखने ( rw
) फ़ोल्डर पर अनुमति your/folder/
, पुनरावर्ती ( -R
)"।
90% मामलों में, यह पर्याप्त होना चाहिए।
मेरी पसंदीदा विधि: ACLs (एक्सेस कंट्रोल लिस्ट) का उपयोग करना
कभी-कभी पहला समाधान पर्याप्त नहीं होता है। मैं सिम्फनी फ्रेमवर्क का उदाहरण लूंगा जो बहुत सारे डेटा को लॉग और कैश करता है। इसलिए इसे उपयुक्त फ़ोल्डर तक लिखने की आवश्यकता है।
और chmod
/ chown
विधि पर्याप्त नहीं हो सकती है, जब आप सीएलआई (मेरे उपयोगकर्ता खाते के तहत) और वेब (वेब सर्वर उपयोगकर्ता) में समानांतर सिम्फनी कंसोल का उपयोग कर रहे हैं। यह बहुत सारी समस्याओं का कारण बनता है क्योंकि सिम्फनी लगातार अनुमतियों को संशोधित कर रहा है।
इस मामले में, हम एसीएल (एक्सेस कंट्रोल लिस्ट) का उपयोग करेंगे, जो कई यूनिक्स प्रणालियों पर अनुमतियों को प्रबंधित करने का एक अधिक उन्नत तरीका है।
यहां आधिकारिक सिम्फनी प्रलेखन द्वारा दिए गए आदेश ( कृपया अपनी आवश्यकताओं को बदलें app/cache
औरapp/logs
):
ऐसी प्रणाली पर जो समर्थन करती है chmod +a
(यानी डेबियन / उबंटू नहीं)
sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
ऐसी प्रणाली पर जो समर्थन नहीं करती है chmod +a
(सबसे आम)
आपको setfacl
उपकरण की आवश्यकता होगी ; हो सकता है कि यह आपके सिस्टम पर डिफ़ॉल्ट रूप से स्थापित हो, इसलिए setfacl -v
यह देखने का प्रयास करें कि क्या कमांड उपलब्ध है।
यदि कमांड उपलब्ध नहीं है, और आप Ubuntu 14.04+ का उपयोग कर रहे हैं, तो आपको बस टूल इंस्टॉल करना होगा:
sudo apt install acl
अन्यथा, अपने ओएस प्रलेखन का पालन करें, क्योंकि आपको यह बदलने की आवश्यकता हो सकती है कि आपका विभाजन कैसे माउंट किया गया है ( उबंटू प्रलेखन यहां )।
और वहाँ हम हैं:
sudo setfacl -R -m u:"www-data":rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:"www-data":rwX -m u:`whoami`:rwX app/cache app/logs
इस पद्धति से मुझे कभी कोई समस्या नहीं हुई, संतुष्ट या आपके पैसे वापस नहीं मिले।