У меня есть несколько проблем symlinking мой /var/www/
к новому Webroot
каталог в моей домашней папке. Я думаю, что они происходят от моего отсутствия понимания полномочий Linux.
Насколько я знаю, символьные ссылки должны принять форму каталога, который Вы хотите к связанному и каталогу, с которым Вы хотите быть связанными, таким образом, в моем случае, я работал:
sudo ln -s ~/Webroot/* /var/www/
это имеет вид обработанных, если я работаю ls
на /var/www/
я вижу все файлы в моем Webroot
каталог.
Каждый раз, когда я пытаюсь выполнить файл, который находится в моем Webroot
папка, я получаю 403 ошибки разрешения, является этим, потому что файлы в моем каталоге Webroot создаются мной, и апачский экземпляр выполняется как www-данные?
если это верно, это означало бы, что я должен изменить полномочия на каждом файле, который я создаю для выполнения его?
Я ранее выполнил локальный апачский экземпляр мое указание на корень каталога моего значения по умолчанию vhost к Webroot
папка, в этом экземпляре я не должен был изменять полномочия. Любая справка ценилась бы.
Это не очень хорошая практика для достижения того, что вы хотите.
Если вы используете 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
Редактировать: Обратите внимание, что вам, безусловно, нужно будет запускать эти команды снова, если вы добавляете файлы / папки, используя учетную запись обычного пользователя.
Я сделал около того же самого с 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
Вы должны проверить разрешения не только о пункте назначения, но и о его родителях.
Я столкнулся с этой проблемой. Но мне не понравилась идея изменить группу моего домашнего каталога на 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
Это не очень хорошая практика, я согласен с Weboide. Но есть простой способ достичь этой цели.
1). включите модуль apache userdir.
sudo a2enmod userdir
это включит модуль apache userdir. Теперь вы можете поместить содержимое веб-сайта в ~/Webroot/
или в любое другое место в вашем домашнем каталоге.
Примечание. Папкой по умолчанию является ~/public_html
i>
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
Надеюсь, это поможет. Если у вас возникнут какие-либо трудности, не стесняйтесь размещать их здесь.