Apache symlinked к корневому каталогу - Ошибки Разрешения

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

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

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

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

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

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

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

15
задан 21 November 2010 в 18:43

5 ответов

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

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

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

0
ответ дан 21 November 2010 в 18:43

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

$ 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

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

$ ls -la /home

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

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

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

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

2
ответ дан 21 November 2010 в 18:43

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

0
ответ дан 21 November 2010 в 18:43

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

0
ответ дан 21 November 2010 в 18:43

Это не очень хорошая практика, я согласен с 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 / ~ username . Вы также можете установить виртуальный хост для этого сайта.

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

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

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

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

1119 Вот так. Вы сделали.

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

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

0
ответ дан 21 November 2010 в 18:43

Другие вопросы по тегам:

Похожие вопросы: