Apache, привязанный к домашнему каталогу – ошибки разрешения

im, имея несколько проблем, символизирующих my /var/www/ в новый каталог Webroot внутри моей домашней папки. Я думаю, что это проистекает из моего недостатка в разрешениях linux.

Что касается im im, символические ссылки должны иметь форму каталога, который вы хотите связать, и каталога, к которому вы хотите привязать, поэтому в моем случае я запускал:

sudo ln -s ~/Webroot/* /var/www/

это работает, если я запустил ls on /var/www/ i, можно увидеть все файлы в моем каталоге Webroot .

Всякий раз, когда я пытаюсь запустить файл, находящийся в моей папке Webroot , я получаю ошибку разрешения 403, это потому, что файлы в моем каталоге Webroot созданы мной, а экземпляр apache выполняется как www-data?

если это так, означает ли это, что мне нужно изменить разрешения для каждого файла, который я создаю, чтобы запустить его?

Я ранее запускал локальный экземпляр apache, указав корень каталога моего по умолчанию на Webroot папку Webroot , в этом случае мне не нужно было изменять какие-либо разрешения. Любая помощь будет оценена по достоинству.

Это не очень хорошая практика, я согласен с Weboide. Но есть простой способ достичь этой цели.

1). включите модуль apache userdir.

 sudo a2enmod userdir 

это позволит использовать модуль apache userdir. Теперь вы можете поместить содержимое веб-сайта в ~/Webroot/ или что-то в своем домашнем каталоге.

Примечание. Папка по умолчанию – ~/public_html

2). Внесите необходимые изменения в /etc/apache2/mods-enabled/userdir.conf .

3). Перезапустить apache

 sudo /etc/init.d/apache2 restart 

Теперь вы можете получить доступ к сайту, переведя свой браузер в http: // ip-address / ~ имя пользователя . Вы также можете установить виртуальный хост для этого сайта.

Если вы хотите запустить php-файлы, вам нужно сделать еще один шаг

отредактируйте /etc/apache2/mods-enabled/php5.conf и прокомментируйте следующие строки:

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

Затем перезапустите apache.

Это оно. Вы сделали.

Ссылка: https: //wiki.ubuntu.com/UserDirectoryPHP

Надеюсь это поможет. Если вы столкнулись с любыми трудностями, не стесняйтесь публиковать его здесь.

Это не очень хорошая практика для достижения того, чего вы хотите.

Если вы используете PHP, вы можете взглянуть на suexec , suphp или php- fpm и fastcgi .


Вы правы в своей проблеме, это проблема разрешения в том, что ваши файлы Webroot принадлежат другому пользователю, чем www-data .

Вот не очень-то плохое решение для решения вашей проблемы. Обратите внимание, что вам, вероятно, потребуется использовать sudo или login как root. Убедитесь, что вы полностью понимаете все команды, которые будете выполнять!

Измените папку Webroot и вложенные папки и файлы, чтобы установить групповое право на www-data и установить соответствующие разрешения:

 # set the group ownership to be www-data chgrp -R www-data /path/to/home/Webroot/ # make sure www-data has read & write permissions (change it to `g=r` if you want to only give read-only access) chmod -vR g=rw /path/to/home/Webroot/ # make sure www-data can access the folders by adding the group execute bit field to directories find /path/to/home/Webroot/ -type d -print0 | xargs -0p chmod -v g+x 

Изменить: обратите внимание, что вам обязательно понадобится снова запустить эти команды, если вы добавите файлы / папки с помощью обычной учетной записи пользователя.

Я сделал почти то же самое с Debian Lenny, но я перешел на не-hax-режим, я настроил apache правильно. Но с символикой:

 $ ll /home drwxr-xr-x 8 root root 4,0K nov 14 14.59 . drwxrwxrwx 7 root root 4,0K nov 14 21.24 www -> /var/www 

Я думаю, вы должны проверить допустимость ~ и ~ / Webroot , я думаю, что ваш dir (~) защищен от чтения, я имею в виду, что вы должны запустить это:

 $ ls -la /home 

Для установки правильных разрешений используйте:

 # chmod 755 /home # chmod 755 /home/<YOURNAME> # chown <YOURNAME>:www-data -R /home/<YOURNAME>/Webroot # chmod 775 -R /home/<YOURNAME>/Webroot 

Я думаю, это должно помочь, но дайте мне больше информации об этом. Я предлагаю вам, чтобы выйти из Webroot из своего каталога, например. to / home, как я , потому что это может быть проблема безопасности.

«#» означает root permisson , например. пишите sudo перед командами; «$» означает разрешение одного пользователя

Вы должны проверить разрешения не только о своем пункте назначения, но и его родителях.

Я столкнулся с этой проблемой. Но мне не понравилась идея сменить группу моего домашнего каталога на www-data. Эту проблему можно просто решить, изменив файл конфигурации для virtualHost. Просто настройте тег Directory, чтобы включить эти

 <Directory "your directory here"> Order allow,deny Allow from all Require all granted </Directory> 

Require all granted – это новая функция, которую я предполагаю; имеющий значение по умолчанию, которое denied .

См. Эту страницу для справки: http://httpd.apache.org/docs/current/mod/core.html#directory