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

14

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

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

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

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

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

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

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

    
задан richzilla 21.11.2010 в 16:43
источник

5 ответов

14

Это не очень хорошая практика, я согласен с 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

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

Если вы хотите запустить 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

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

    
ответ дан aneeshep 22.11.2010 в 07:01
источник
6

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

Если вы используете 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

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

    
ответ дан Weboide 21.11.2010 в 17:42
1

Я делал почти то же самое с 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 из своего каталога, например. на / home , например me , потому что это может быть проблема безопасности.

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

    
ответ дан antivirtel 21.11.2010 в 17:42
0

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

    
ответ дан zVictor 16.05.2011 в 20:25
0

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

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

Require all granted - новая функция, я полагаю; с значением по умолчанию denied .

См. эту страницу для справки: Ссылка

    
ответ дан Peter 14.10.2013 в 11:57