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папку, в цьому випадку мені не потрібно було змінювати жодні дозволи. Будь-яка допомога буде вдячна.


Ви перевірили, чи не налаштовано Apache, щоб не слідкувати за символьними посиланнями .... У мене була ця проблема одного разу. пов'язаної нитку на іншому форумі може бути тут: linuxforums.org/forum/servers / ...
RobotHumans

Відповіді:


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

Сподіваюсь, це допомагає. Якщо у вас виникли труднощі, не соромтеся розмістити це тут.


7

Це не дуже добра практика для досягнення того, що ви хочете.

Якщо ви використовуєте PHP, ви можете поглянути на suexec , suphp або php-fpm та fastcgi .


Ви маєте рацію щодо своєї проблеми, це питання про дозвіл у тому, що ваші Webrootфайли належать іншому користувачеві, ніж www-data.

Ось не дуже поганий варіант вирішення вашої проблеми. Зауважте, що вам, ймовірно, доведеться використовувати sudo або логін як корінь. Переконайтесь, що ви повністю розумієте всі команди, які ви будете виконувати !!

Змініть 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

Редагувати: Зауважте, що вам, безумовно, потрібно буде запустити ці команди ще раз, якщо ви додасте файли / папки, використовуючи звичайний обліковий запис користувача.


2

Я робив майже те саме, що і з Дебіаном Ленні, але я перейшов на несанкціонований режим, правильно налаштував апаш. Але із символьним посиланням:

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

"#" означає кореневий дозвіл , напр. писати судо перед командами; "$" означає дозвіл одного користувача


0

Ви повинні перевірити дозволи не лише про місце призначення, але і про його батьків.


Чому? Це обмеження Apache чи обмеження файлової системи?
Flimm

Вибачте. Я не перевіряв інформацію, вона просто ґрунтується на особистому досвіді.
zVictor

0

Я зіткнувся з цим питанням. Але мені не сподобалася ідея зміни групи мого домашнього каталогу на www-data. Цю проблему можна просто вирішити, змінивши файл конфігурації для virtualHost. Просто налаштуйте тег каталогів, щоб включити їх

<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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.