अपाचे की अनुमति


1

मैं कोशिश कर रहा हूं कि LAMP OSx Lion पर काम कर रहा है और मुझे थोड़ी परेशानी हो रही है।

Apache, MySQL और PHP को सेट अप करें और ठीक काम करें। सेटिंग्स में साझा करने के तहत "वेबसाइट" चालू कर दिया है। मूल ~ / user_name / साइट फ़ोल्डर को हटा दिया और एक निर्देशिका withint ~ / user_name के लिए साइटों का एक प्रतीकात्मक लिंक बनाया।

अब जब मैं http: // localhost / ~ user_name चलाने की कोशिश करता हूं तो मुझे यह मिलता है:

निषिद्ध आपको इस सर्वर पर / ~ user_name तक पहुंचने की अनुमति नहीं है।

मैं इन अनुमतियों को कहां और कैसे बदलूं?


1
मैं MAMP की अत्यधिक अनुशंसा करता हूं , जो LAMP की तरह है लेकिन विशेष रूप से मैक के लिए। मैंने इसका इस्तेमाल बिना किसी समस्या के किया है।
नाथन ग्रीनस्टीन

अपाचे डिफ़ॉल्ट रूप से सिम्लिंक का पालन नहीं करता है। लेकिन इससे पहले कि हम उस एक को हल करने की कोशिश करें, चलो पहले मूल सेटअप को सही करें। क्या आप ~/Sitesफ़ोल्डर को फिर से बना सकते हैं, इसमें कम से कम एक html फ़ाइल बना सकते हैं और इसके माध्यम से एक्सेस करने का प्रयास कर सकते हैं http://localhost/~user/the-file.html?
nohillside

धन्यवाद, @patrix। यह ठीक काम करता है। सिचुएशन लिंक डिलीट कर दिए और मैं लोकलहोस्ट / ~ यूजर / टेस्ट.के लिए ठीक-ठाक एक्सेस कर सकता हूं।
डेविड

Httpd.conf <निर्देशिका /> विकल्प -Indexes में निम्नलिखित बदलकर काम करने के लिए इस हो रही समाप्त करना शामिल होता FollowSymLinks MultiViews AllowOverride कोई भी विकल्प आदेश, की अनुमति देने से इनकार सभी </ निर्देशिका> से की अनुमति दें
डेविड

बस डिफ़ॉल्ट डॉक्यूमेंट रूट ( /Library/WebServer/Documents) के साथ रहें और अपने होम फोल्डर में इसके लिए एक सिमलिंक बनाएं।
अभि बेकर्ट

जवाबों:


2

आपके "लोकलहोस्ट" पर वेबसाइटों तक पहुँचने के दौरान, कई अनुमतियाँ हैं जिनकी आवश्यकता है। स्थानीयहोस्ट सामग्री आपकी साइट निर्देशिका में हो सकती है, जिस स्थिति में, ये आदेश किसी भी "निषिद्ध" संदेशों को रोकने में मदद कर सकते हैं।

सुनिश्चित करें कि उपयोगकर्ता निर्देशिका रीड डायरेक्टरी एक्सेस की अनुमति देता है:

cd /
sudo chmod -v 755 Users

यह सुनिश्चित करें कि उपयोगकर्ता नाम निर्देशिका निर्देशिका को पढ़ने की अनुमति देता है:

cd Users
sudo chmod -v 755 username

अपनी साइट निर्देशिका सुनिश्चित करें कि निर्देशिका निर्देशिका को पढ़ने की अनुमति देता है:

cd ~
chmod -v 755 Sites

साइटों की हर उपनिर्देशिका को पढ़ने की आवश्यकता है:

cd ~/Sites
find ~/Sites -type d -print -exec chmod 755 {} \;

साइट और उपनिर्देशिका में प्रत्येक फ़ाइल को पढ़ने की आवश्यकता है:

cd ~/Sites
fing ~/Sites -type f -print -exec chmod 644 {} \;

अपाचे _www समूह का उपयोग करता है, इसलिए अपाचे को साइट डाइरेक्टरी में हर चीज की पूरी पहुँच देने के लिए, इसके साथ विस्तारित विशेषताएँ सेट करें:

chmod -R +a "group:_www allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" ~/Sites

1

कुछ लोगों का मानना ​​है कि कभी भी उत्पादन के माहौल में OS X का उपयोग किया जाता है, दस्तावेज़ के रूट के साथ अपाचे को जो करना है उसे करने देना अच्छा है। आप ACL की "विरासत" सुविधा के साथ ऐसा कर सकते हैं:

sudo chmod -R +a "group:_www allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" /Library/WebServer/Documents/

उपरोक्त कमांड डिफ़ॉल्ट एपाचे समूह को डिफ़ॉल्ट डॉक्यूमेंट रूट में हर चीज को पूरा पढ़ने / लिखने के लिए एक्सेस देगा और "इनहेरिटेंस" झंडे लागू करेगा ताकि बनाई गई कोई भी नई फाइल / डायरेक्ट्री भी अपाचे द्वारा लिखने योग्य हो, भले ही एपाचे ने उन्हें नहीं बनाया हो।

मुझे यह कमांड चलाना भी पसंद है:

sudo chmod -R +a "group:staff allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" /Library/WebServer/Documents/

जो "स्टाफ" उपयोगकर्ताओं को देगा (मूल रूप से इसका मतलब है कि सभी "वास्तविक" उपयोगकर्ता) सब कुछ तक पूर्ण पहुंच, यहां तक ​​कि एपाचे द्वारा बनाई गई फाइलें भी।


-1

आप chmodउस फ़ोल्डर पर अनुमतियों को सेट करने के लिए उपयोग कर सकते हैं जहां आपकी साइट है। सुनिश्चित करें कि उपयोगकर्ता Apache चल रहा है जैसा कि उस फ़ोल्डर में कुछ भी पढ़ सकता है।

  1. टर्मिनल खोलें
  2. cd /path/to/website
  3. chmod -r 644 .

इससे हो जाना चाहिए। विदित हो कि यह आपकी php स्रोत फ़ाइलों को किसी के भी पठनीय बना देगा।


वे अनुमतियां (466) वास्तव में गलत हैं। वे उपयोगकर्ता को केवल पढ़ने के लिए उपयोग की अनुमति देते हैं, लेकिन बाकी सभी लोग एक्सेस + लिखते हैं। सिवाय इसके कि वे किसी को निर्देशिकाओं तक पहुंच (उर्फ खोज) की अनुमति नहीं देते हैं, कोई भी वास्तव में फाइलों को अंदर नहीं ले सकता है (बस पढ़ें और शायद अपना नाम लिखें)।
गॉर्डन डेविसन

मुझे लगता है कि आपका मतलब है चामोद 644
एंड्रयू विट

1
644 अधिक समझ में आता है, लेकिन फिर भी निष्पादन को समाप्त करता है (निर्देशिका के लिए आवश्यक)। chmod -R u=rwX,go=rX .काम करेगा, क्योंकि chmod "X" अनुमति को "x के रूप में मानता है यदि वह समझ में आता है"।
गॉर्डन डेविसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.