अपाचे मेरे घर निर्देशिका में फ़ोल्डर्स का उपयोग नहीं कर सकते


29

मैंने अपने होम डायरेक्टरी में एक फोल्डर की ओर इशारा करने के लिए अपाचे का कॉन्फ़िगरेशन बदल दिया है:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /home/dbugger/html

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/dbugger/html/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

मैंने अपनी /home/dbugger/htmlअनुमति 777 भी दे दी है। लेकिन मुझे अभी भी वही त्रुटि संदेश मिल रहा है http://localhost: "403 निषिद्ध"

ऐसा क्या है जो मुझे याद आ रहा है?


/home/dbuggerअनुमति के बारे में क्या ?
एरिक कार्वाल्हो

आपका मतलब है कि मुझे अपने पूरे होम फोल्डर को 777 बनाना चाहिए? यह अतिदेय लगता है। यहां तक ​​कि 777 html बनाना एक सुरक्षित उपाय नहीं है। मैं सिर्फ समस्या की जड़ को पहचानने की कोशिश कर रहा हूँ।
एनरिक मोरेनो टेंट

1
apache यूजर www-data के रूप में चलती है। यदि उस उपयोगकर्ता के पास आपके घर पर अनुमति निष्पादित नहीं है, तो अपाचे किसी भी फ़ाइल को पढ़ने में सक्षम नहीं होगा।
एरिक कारवालो

वहाँ मेरे घर निर्देशिका के एक सबफ़ोल्डर जोड़ने के लिए www- डेटा wihtout करने के लिए यह घर फ़ोल्डर के लिए पूर्ण पहुँच देने के लिए नहीं है? उस तर्क के बाद ऐसा लगता है जैसे मुझे ऑल द होम फोल्डर को एक्सेस देना होगा, साथ ही मुझे इसे / होम एक्सेस करना होगा। यह बहुत ज्यादा लगता है
एनरिक मोरेनो टेंट

जवाबों:


25

इसने मेरे लिए काम किया

<Directory />
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
    Allow from all
</Directory>

महत्वपूर्ण बिट को बदलना था

Order allow, deny

सेवा मेरे

Require all granted 

आप मेरा समय बचाते हैं, मुझे अनुमति बदलने की जरूरत नहीं है
khaled_webdev

हाय मुझे खुशी है कि इसने आपकी मदद की
szydan

3
मैंने यह देखने की स्वतंत्रता ली कि "सभी की आवश्यकता है" क्या था और पाया कि यह Allow from allअपाचे 2.4 के बाद से "नया समतुल्य" है - serverfault.com/questions/549517/-
प्रोग्रामर

8
नहीं, पूरी जड़ तक पहुंच प्रदान करना एक अच्छा विचार नहीं है!
bajix

9
स्थापना AllowOverrideके लिए Allअपने पर जड़ निर्देशिका सबसे अच्छे रूप में लापरवाह है! देखें httpd.apache.org/docs/2.4/mod/core.html#allowoverride जानकारी के लिए।
बोम्बे

19

userdirमॉड्यूल सक्षम करें :

sudo a2enmod userdir 

उपयोगकर्ता निर्देशिका में PHP निष्पादन सक्षम करें:

sudo nano /etc/apache2/mods-available/php5.conf  

(या उदाहरण के लिए php7.0 का उपयोग करते हुए)

sudo nano /etc/apache2/mods-available/php7.0.conf

इस भाग पर टिप्पणी करें ( #प्रत्येक पंक्ति के आरंभ में):

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

बचाने के लिए Ctrl+ दबाएँX

निर्देशिका लिस्टिंग सक्षम करें:

sudo nano /etc/apache2/apache2.conf

इसे जोड़ो:

<Directory /home/*/public_html/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

बचाने के लिए Ctrl+ दबाएँX


पुनः प्रारंभ अपाचे ( sudoयहां भी आवश्यक है):

sudo service apache2 restart

अब अपनी php फाइलों को /home/yourname/public_htmlडायरेक्टरी में रखें और
http://localhost/~yournameअपने वेब ब्राउजर से जाएं।


11

Apache यूजर के रूप में चलती है www-data। यदि आपके घर पर निष्पादन की अनुमति नहीं है, तो अपाचे किसी भी फ़ाइल को पढ़ने में सक्षम नहीं होगा।

आप को घर का समूह बदलें www-data:

chgrp www-data /home/dbugger

और इसे केवल अपने घर निर्देशिका को पार करने की अनुमति दें:

chmod g+x /home/dbugger

आप इसके परमिट को भी प्रतिबंधित कर सकते हैं /home/dbugger/html:

chgrp www-data /home/dbugger/html
chmod 750 /home/dbugger/html

क्या मैं ऐसा कर सकता हूं, लेकिन /home/dbuggerउपयोग करने के बजाय /home/dbugger/html?
एनरिक मोरेनो टेंट

आप /home/dbugger/html777 के बजाय उस अनुमति को भी लागू कर सकते हैं , लेकिन आपको यह ध्यान रखना होगा कि यदि उपयोगकर्ता www-data cdआपके घर पर नहीं कर सकता है, तो वह किसी भी फ़ाइल या सबफ़ोल्डर तक नहीं पहुंच पाएगा। इसलिए, यदि आपके घर की अनुमति rwx------ dbugger:dbuggerअपाचे है, तो आप अपने घर के अंदर किसी भी फ़ाइल का उपयोग नहीं कर पाएंगे। यदि आप थोड़ी सी पहुंच को प्रतिबंधित नहीं करना चाहते हैं तो आप केवल निष्पादन की अनुमति ( chmod g+x /home/dbugger) दे सकते हैं , मुझे यकीन नहीं है, लेकिन मुझे लगता है कि यह काम करता है।
एरिक कारवाल्हो

क्षमा करें, लेकिन इस समाधान में से किसी ने भी काम नहीं किया :(
एनरिक मोरेनो टेंट

chgrp www-data /home/dbugger@DavidGreene विधि के संयोजन में मेरे लिए यह काम कर रहा है
laurent

आपके उपयोगकर्ता समूह को अपाचे उपयोगकर्ता (www-data) में जोड़ना संभव है sudo usermod -a -G dbugger www-data, इसके बाद आपको अपाचे को पुनरारंभ करने की आवश्यकता है।
TIIUNDER

1

यदि आपको अपने होम डाइरेक्टरी का उपयोग विकास के माहौल की मेजबानी के लिए करना है, तो आपको कम से कम यह आवश्यक है कि आपको कुछ अनुप्रयोगों के लिए लिखने की अनुमति चाहिए। आपको Apache mod_userdir मॉड्यूल की आवश्यकता है और आप एक वर्चुअल होस्ट का उपयोग करने के लिए http: //domain.local/~user_name/dir_name/ * जैसे / home / user_name / public_html / * का उपयोग कर सकते हैं। इस तरह लिंक:

$ sudo ln -s /etc/apache2/mods-available/userdir.conf /etc/apache2/mods-enabled/
$ sudo ln -s /etc/apache2/mods-available/userdir.load /etc/apache2/mods-enabled/
$ sudo service apache2 restart

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