Apache не может получить доступ к папкам в моем домашнем каталоге

Я изменил конфигурацию Apache, чтобы указать на папку в моем домашнем каталоге:

<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 Запрещено"

Чего же мне не хватает?

Это сработало для меня

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

Важным моментом было изменить

Order allow, deny

к

Require all granted 

Включить 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 сохранить


Перезапустить apache (sudo требуется и здесь):

sudo service apache2 restart

Теперь поместите ваши php-файлы в /home/yourname/public_html каталог и перейдите к
http://localhost/~yourname из вашего веб-браузера.

Apache запускается от имени пользователя www-data. Если у него нет разрешения на выполнение в вашем доме, apache не сможет прочитать ни один файл.

Измените домашнюю группу на www-data:

chgrp www-data /home/dbugger

И дайте ему разрешение только на просмотр вашего домашнего каталога:

chmod g+x /home/dbugger

Вы также можете ограничить разрешения на /home/dbugger/html:

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

Вам не нужно изменять разрешения, если вы хотите использовать свой домашний каталог для размещения среды разработки, по крайней мере, для некоторых приложений вам нужны разрешения на запись. Вам нужен модуль apache mod_userdir, и вы можете получить доступ к /home /user_name/public_html/ * следующим образом http://domain.local /~имя_пользователя/имя_дира/* для использования виртуальных хостов, чтобы использовать модуль mod_userdir, вам необходимо создать sym-ссылку, подобную этой:

$ 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

apache запускается как пользовательские www-данные. Если у этого пользователя нет разрешения на выполнение в вашем доме, apache не сможет прочитать ни один файл.

Как насчет разрешения /home/dbugger?

Ты имеешь в виду, что я должен сделать 777 всей своей домашней папкой? Это кажется преувеличением. Даже превращение 777 в html не является безопасным решением. Я просто делаю это, чтобы попытаться определить корень проблемы.

Нет ли способа добавить подпапку моего домашнего каталога в www-data, не имея его, чтобы предоставить полный доступ к домашней папке? Следуя этой логике, кажется, что мне также пришлось бы предоставить доступ ко ВСЕМ ДОМАШНИМ папкам, так как я должен был бы предоставить ему доступ к / home. Это кажется слишком большим