Назад | Перейти на главную страницу

Apache 2.4 Виртуальный хост apache.conf 403 разрешение и 404 ошибки корневого доступа к документу

Я знаю, что этот вопрос уже поднимался, но клянусь, я прочитал и другие сообщения. Я использую виртуальные хосты на сервере Apache / 2.4.7 (Ubuntu) для размещения нескольких сайтов wordpress. У меня есть один сайт, SiteA, который работает нормально, но SiteB (SiteBroken) не работает.

Я установил apache через apt-get, и мой файл конфигурации

/etc/apache2
-rw-r--r--  1 root root 7.3K Mar 28 15:29 apache2.conf

Я читал о смене пользователей либо внутри этого файла (в чем я не уверен), либо через chown команда, и как таковые мои разрешения для SiteA против SiteB

/var/www/SiteA/public_html
total 188k
drwxr-xr-x  5 root     root     4.0K Mar 31 00:42 ..
-rw-r--r--  1 root     root      25K Apr  4 20:23 wp-signup.php
-rw-r--r--  1 root     root      11K Apr  4 20:23 wp-settings.php
-rw-r--r--  1 root     root      33K Apr  4 20:23 wp-login.php
-rw-r--r--  1 root     root     2.9K Apr  4 20:23 wp-cron.php
-rw-r--r--  1 root     root     7.1K Apr  4 20:23 readme.html
-rw-r--r--  1 root     root      418 Apr  4 20:23 index.php
-rw-r--r--  1 root     root     3.0K Apr  4 20:23 xmlrpc.php
-rw-r--r--  1 root     root     4.0K Apr  4 20:23 wp-trackback.php
-rw-r--r--  1 root     root     2.7K Apr  4 20:23 wp-load.php
-rw-r--r--  1 root     root     2.4K Apr  4 20:23 wp-links-opml.php
drwxr-xr-x 12 root     root     4.0K Apr  4 20:23 wp-includes
-rw-r--r--  1 root     root     2.7K Apr  4 20:23 wp-config-sample.php
-rw-r--r--  1 root     root     4.9K Apr  4 20:23 wp-comments-post.php
-rw-r--r--  1 root     root      271 Apr  4 20:23 wp-blog-header.php
-rw-r--r--  1 root     root     4.9K Apr  4 20:23 wp-activate.php
-rw-r--r--  1 root     root      20K Apr  4 20:23 license.txt
-rw-r--r--  1 root     root     8.1K Apr  4 20:23 wp-mail.php
drwxr-xr-x  9 root     root     4.0K Apr  4 20:23 wp-admin
drwxr-xr-x  6 www-data www-data 4.0K Apr 16 14:55 wp-content
-rw-r--r--  1 root     root     3.5K Apr 16 14:58 wp-config.php
drwxr-xr-x  5 root     root     4.0K Apr 16 14:58 .

/var/www/SiteB/public_html
total 220k
-rw-r--r--  1 root     root     3.0K Jan  5 21:17 xmlrpc.php
-rw-r--r--  1 root     root     4.0K Jan  5 21:17 wp-trackback.php
-rw-r--r--  1 root     root      25K Jan  5 21:17 wp-signup.php
-rw-r--r--  1 root     root      11K Jan  5 21:17 wp-settings.php
-rw-r--r--  1 root     root     8.1K Jan  5 21:17 wp-mail.php
-rw-r--r--  1 root     root      33K Jan  5 21:17 wp-login.php
-rw-r--r--  1 root     root     2.7K Jan  5 21:17 wp-load.php
-rw-r--r--  1 root     root     2.4K Jan  5 21:17 wp-links-opml.php
-rw-r--r--  1 root     root     2.9K Jan  5 21:17 wp-cron.php
-rw-r--r--  1 root     root     4.9K Jan  5 21:17 wp-comments-post.php
-rw-r--r--  1 root     root      271 Jan  5 21:17 wp-blog-header.php
-rw-r--r--  1 root     root     4.9K Jan  5 21:17 wp-activate.php
-rw-r--r--  1 root     root      418 Jan  5 21:17 index.php
drwxr-xr-x  9 root     root     4.0K Jan  5 22:11 wp-admin
-rw-r--r--  1 root     root      20K Feb 18 22:05 license.txt
drwxr-xr-x 12 root     root     4.0K Mar  1 21:57 wp-includes
-rw-r--r--  1 root     root     3.4K Mar 28 23:48 wp-config.php
-rw-r--r--  1 root     root     7.1K May  7 06:30 readme.html
drwxr-xr-x  8 www-data www-data 4.0K May  7 23:08 wp-content
-rw-r--r--  1 root     root      25K May 25 06:23 error_log
-rw-r--r--  1 root     root      792 May 30 14:50 2.htaccess
-rw-r--r--  1 root     root      241 May 30 14:51 .offline.htaccess
drwxr-xr-x  6 root     root     4.0K May 30 14:55 ..
drwxr-xr-x  5 root     root     4.0K Jun  1 07:25 .

Я удалил .httaccces из конфигурации SiteB, так как я пытался исключить эту переменную, чтобы мой сайт получил ошибку 403 You don't have permission to access / on this server

/etc/apache2/sites-available
cat SiteA.conf
# public: /var/www/SiteA/public_html/

<VirtualHost *:80>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin webmaster@SiteA
  ServerName  www.SiteA
  ServerAlias SiteA

  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html index.php
  DocumentRoot /var/www/SiteA/public_html
  # Log file locations
  LogLevel warn
  ErrorLog  /var/www/SiteA/log/error.log
  CustomLog /var/www/SiteA/log/access.log combined
</VirtualHost>

/etc/apache2/sites-available
cat SiteBroken.conf
# domain: SiteBroken
# public: /var/www/SiteBroken/public_html/

<VirtualHost *:80>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin webmaster@SiteBroken
  ServerName  www.SiteBroken
  ServerAlias SiteBroken

  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html index.php
  DocumentRoot /var/www/SiteBroken/public_html
  # Log file locations
  LogLevel warn
  ErrorLog  /var/www/SiteBroken/log/error.log
  CustomLog /var/www/SiteBroken/log/access.log combined
</VirtualHost>

diff SiteA.conf SiteBroken.conf 
1,3c1,2
< 
< 
< # public: /var/www/SiteA/public_html/
---
> # domain: SiteBroken
> # public: /var/www/SiteBroken/public_html/
7,9c6,8
<   ServerAdmin webmaster@SiteA
<   ServerName  www.SiteA
<   ServerAlias SiteA
---
>   ServerAdmin webmaster@SiteBroken
>   ServerName  www.SiteBroken
>   ServerAlias SiteBroken
13c12
<   DocumentRoot /var/www/SiteA/public_html
---
>   DocumentRoot /var/www/SiteBroken/public_html
16,17c15,16
<   ErrorLog  /var/www/SiteA/log/error.log
<   CustomLog /var/www/SiteA/log/access.log combined
---
>   ErrorLog  /var/www/SiteBroken/log/error.log
>   CustomLog /var/www/SiteBroken/log/access.log combined
19,20d17
< 



/etc/apache2/sites-available
total 44K
-rw-r--r-- 1 root root 6.3K Jan  7  2014 default-ssl.conf
-rw-r--r-- 1 root root 1.4K Jan  7  2014 000-default.conf
-rw-r--r-- 1 root root  626 Mar 31 00:42 SiteA.conf
drwxr-xr-x 8 root root 4.0K Jun  1 07:13 ..
-rw-r--r-- 1 root root  713 Jun  1 07:16 SiteBroken.conf
drwxr-xr-x 2 root root 4.0K Jun  1 07:16 .

Я заметил это сообщение об ошибке в журнале ошибок еще вчера, когда искал неисправности.

/var/www/SiteBroken/log$ cat error.log 
[Tue Mar 31 03:22:14.410438 2015] [:error] [pid 25622] [client 113.123.33.183:47379] script '/var/www/SiteBroken/public_html/phpinfo.php' not found or unable to stat

SiteA, который работает отлично, имеет все те же файлы wordpress и тому подобное, нет phpinfo.php файл в каталоге SiteA, я не уверен, почему работает один сайт, но я не могу просмотреть SiteB

Недавно я переключил весь каталог public_html на www-data, но это все еще не разрешило сообщение об ошибке 403.

sudo chown -R www-data:www-data /var/www/SiteBroken/public_html/
drwxr-xr-x 5 www-data www-data 4.0K Jun  1 07:25 public_html

Включена отладка на уровне журнала и все, что я вижу, это остановка формы вывода и перезапуск apache, в дополнение к этому отсутствующему файлу `/var/www/html/moadmin.php 'и то, нужен ли этот файл

[Mon Jun 01 07:25:38.832460 2015] [mpm_prefork:notice] [pid 9847] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.7 configured -- resuming normal operations
[Mon Jun 01 07:25:38.832538 2015] [core:notice] [pid 9847] AH00094: Command line: '/usr/sbin/apache2'
[Mon Jun 01 08:27:58.649847 2015] [mpm_prefork:notice] [pid 9847] AH00169: caught SIGTERM, shutting down
[Mon Jun 01 08:27:59.551789 2015] [mpm_prefork:notice] [pid 10198] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.7 configured -- resuming normal operations
[Mon Jun 01 08:27:59.551885 2015] [core:notice] [pid 10198] AH00094: Command line: '/usr/sbin/apache2'
[Mon Jun 01 10:43:46.042411 2015] [:error] [pid 10208] [client 89.248.172.27:51451] script '/var/www/html/moadmin.php' not found or unable to stat
[Tue Jun 02 07:53:47.086020 2015] [mpm_prefork:notice] [pid 10198] AH00169: caught SIGTERM, shutting down
[Tue Jun 02 07:53:48.203046 2015] [mpm_prefork:notice] [pid 12370] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.7 configured -- resuming normal operations
[Tue Jun 02 07:53:48.203105 2015] [core:notice] [pid 12370] AH00094: Command line: '/usr/sbin/apache2'
[Tue Jun 02 07:57:14.417485 2015] [mpm_prefork:notice] [pid 12370] AH00169: caught SIGTERM, shutting down
[Tue Jun 02 07:57:15.280777 2015] [mpm_prefork:notice] [pid 12515] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.7 configured -- resuming normal operations
[Tue Jun 02 07:57:15.280852 2015] [core:notice] [pid 12515] AH00094: Command line: '/usr/sbin/apache2'
[Tue Jun 02 07:59:45.902752 2015] [mpm_prefork:notice] [pid 12515] AH00169: caught SIGTERM, shutting down
[Tue Jun 02 07:59:47.017507 2015] [mpm_prefork:notice] [pid 12653] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.7 configured -- resuming normal operations
[Tue Jun 02 07:59:47.017577 2015] [core:notice] [pid 12653] AH00094: Command line: '/usr/sbin/apache2'
[Tue Jun 02 08:05:59.014895 2015] [mpm_prefork:notice] [pid 12653] AH00169: caught SIGTERM, shutting down
[Tue Jun 02 08:06:00.124043 2015] [mpm_prefork:notice] [pid 12787] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.7 configured -- resuming normal operations
[Tue Jun 02 08:06:00.124101 2015] [core:notice] [pid 12787] AH00094: Command line: '/usr/sbin/apache2'
[Tue Jun 02 08:23:09.214883 2015] [mpm_prefork:notice] [pid 12787] AH00169: caught SIGTERM, shutting down
[Tue Jun 02 08:23:10.332498 2015] [mpm_prefork:notice] [pid 13039] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.7 configured -- resuming normal operations
[Tue Jun 02 08:23:10.332556 2015] [core:notice] [pid 13039] AH00094: Command line: '/usr/sbin/apache2'
[Tue Jun 02 08:40:06.186778 2015] [mpm_prefork:notice] [pid 13039] AH00169: caught SIGTERM, shutting down
[Tue Jun 02 08:40:07.305531 2015] [mpm_prefork:notice] [pid 13491] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.7 configured -- resuming normal operations
[Tue Jun 02 08:40:07.305595 2015] [core:notice] [pid 13491] AH00094: Command line: '/usr/sbin/apache2'

Обновление: ls -la

/var/www$ ls -la
total 48
drwxr-xr-x  7 root root     4096 Jun  2 08:21 .
drwxr-xr-x 14 root root     4096 Mar 28 14:40 ..
drwxr-xr-x  5 root root     4096 Mar 31 00:42 SiteA (working website)
drwxr-xr-x  2 root root     4096 May 30 12:50 html
drwxr-xr-x  6 root www-data 4096 May 30 14:55 SiteBroken

Обновление 06.06.15

Я изменил apache.conf после прочтения нескольких других сообщений SE, на следующее:

    <Directory />
        Options FollowSymLinks
        AllowOverride all
        Require all granted
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride all
        Require all granted
</Directory>

Я даже добавил туда свой полный корень документа, чтобы проверить все и вся:

<Directory /var/www/html/SiteBroken/public_html>
        Options FollowSymLinks
        AllowOverride all 
        Require all granted
</Directory>

Теперь мой SiteBroken появляется и генерируется, когда я указываю в браузере URL-адрес, однако теперь я не могу переходить на какие-либо страницы, т.е. www.sitebroken.com/foo или www.sitebroken.com/bar

Мне сказали, что мой Virutal Server не может читать файлы php? Это так?

/var/www/html/SiteBroken/public_html$
total 188K
-rw-r--r--  1 root     root     3.0K Apr  4 20:23 xmlrpc.php
-rw-r--r--  1 root     root     4.0K Apr  4 20:23 wp-trackback.php
-rw-r--r--  1 root     root      25K Apr  4 20:23 wp-signup.php
-rw-r--r--  1 root     root      11K Apr  4 20:23 wp-settings.php
-rw-r--r--  1 root     root     8.1K Apr  4 20:23 wp-mail.php
-rw-r--r--  1 root     root      33K Apr  4 20:23 wp-login.php
-rw-r--r--  1 root     root     2.7K Apr  4 20:23 wp-load.php
-rw-r--r--  1 root     root     2.4K Apr  4 20:23 wp-links-opml.php
-rw-r--r--  1 root     root     2.9K Apr  4 20:23 wp-cron.php
-rw-r--r--  1 root     root     2.7K Apr  4 20:23 wp-config-sample.php
-rw-r--r--  1 root     root     4.9K Apr  4 20:23 wp-comments-post.php
-rw-r--r--  1 root     root      271 Apr  4 20:23 wp-blog-header.php
-rw-r--r--  1 root     root     4.9K Apr  4 20:23 wp-activate.php
-rw-r--r--  1 root     root     7.1K Apr  4 20:23 readme.html
-rw-r--r--  1 root     root      20K Apr  4 20:23 license.txt
-rw-r--r--  1 root     root      418 Apr  4 20:23 index.php
drwxr-xr-x 12 root     root     4.0K Jun  6 18:17 wp-includes
drwxr-xr-x  6 www-data www-data 4.0K Jun  6 18:17 wp-content
drwxr-xr-x  5 root     root     4.0K Jun  6 18:17 .
drwxr-xr-x  9 root     root     4.0K Jun  6 18:17 wp-admin
drwxr-xr-x  5 root     root     4.0K Jun  6 18:17 ..
-rw-r--r--  1 root     root     3.5K Jun  6 19:03 wp-config.php

Как я уже сказал в одном из своих комментариев, у меня есть еще один сайт, SiteA, полностью отражающий конфигурации SiteBroken, и я озадачен тем, как один сайт может работать, а другой, SiteBroken, затем получает ошибку 403, а теперь ошибку 404. The requested URL /foo/ was not found on this server.

Я использовал эти вопросы https://askubuntu.com/questions/448944/where-to-place-my-local-website-starting-with-the-2-4-7-version-of-apache2 и https://stackoverflow.com/questions/6959189/apache-virtualhost-403-forbidden

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

Попробуйте настроить свой http-xampp

вы найдете там этот код:

<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
         Require local
    ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</LocationMatch>

Попробуйте изменить это с помощью этого:

<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
         Require local
         Require ip 192.120.203 // ip address of another pc or I would say the start of the ipaddress .
    ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</LocationMatch>

Это работает для меня, когда я получил эту ошибку. Надеюсь, это сработает и для вас.

Смена владельца на www-data: www-data с разрешениями r / w для папок, в которых размещается контент, позволит процессу httpd записывать в эту папку, что, в зависимости от сложности приложения и его безопасности, может дать хакеру возможность перезаписывать законный код вещами по своему выбору.

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

chmod g=rx /var/www/SiteA 
chown root:www-data /var/www/SiteA 

chmod g=rx /var/www/SiteA/public_html 
chown root:www-data /var/www/SiteA/public_html 

Без бита выполнения процесс не может спуститься в папку для чтения файлов, даже если они ему принадлежат.

Попробуйте поместить это в свой VirtualHost:

<Directory /var/www/SiteBroken/public_html/>
   Require all granted
</Directory>

Как правило, делать всю установку WordPress принадлежащей www-data (даже для тестирования) - очень плохая практика. Это позволит процессу Apache записывать файлы в любом месте вашего дерева каталогов, включая файлы PHP. Только за последние 3 месяца я испытал более десятка сайтов, которые были взломаны таким образом. Затем злоумышленники могут установить все, что захотят - бэкдор-оболочки, спам-боты, что угодно. Они также могут прочитать ваш файл wp-config.php, который содержит все учетные данные вашей базы данных. Это также может привести к тому, что злоумышленник просмотрит другие каталоги сайта (например, SiteA) и получит полный доступ к этой базе данных.

Не уверен, что требование «Все, предоставленное выше», поможет, но я знаю, что Apache 2.4 отличается от 2.2 своими механизмами безопасности, и это помогало мне в прошлом.

Изменить владельца на www-data вместо root. Вы можете сделать это с помощью chown как это:

$ sudo chown -R www-data:www-data /var/www/SiteA/public_html

Это сделает www-data владелец всех файлов / каталогов в public_html.