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

15

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

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

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

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

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

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

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

richzilla
источник
Вы проверили, чтобы убедиться, что Apache не настроен, чтобы не следовать символические ссылки .... У меня была эта проблема однажды.
похожая

Ответы:

15

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

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

sudo  a2enmod userdir

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

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

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

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

sudo /etc/init.d/apache2 restart

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

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

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

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

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

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

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

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

aneeshep
источник
7

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

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


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

Вот неплохое решение, чтобы обойти вашу проблему. Обратите внимание, что вам, вероятно, потребуется использовать sudo или войти в систему как 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
источник
2

Я сделал примерно то же самое с 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 , я думаю, что ваш каталог (~) защищен от чтения, я имею в виду, вы должны запустить это:

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

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

antivirtel
источник
0

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

zVictor
источник
Почему? Это ограничение Apache или ограничение файловой системы?
Flimm
Сожалею. Я не проверял информацию, она просто основана на личном опыте.
zVictor
0

Я столкнулся с этой проблемой. Но мне не понравилась идея изменить группу моего домашнего каталога на 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

Питер
источник