Изменение страницы Apache по умолчанию на PHP - PullRequest
0 голосов
/ 27 августа 2011

Я хочу изменить страницу Apache по умолчанию, если индексы отсутствуют, и появляется ошибка 500. Мой сервер Linux Red Hat с настройкой клиентов с использованием Kloxo и /etc/httpd/conf.d/welcome.conf Я пытаюсь изменить:

<LocationMatch "^/+$">
    Options -Indexes
    ErrorDocument 403 /error/noindex.html
</LocationMatch>

К

<LocationMatch "^/+$">
    Options -Indexes
    ErrorDocument 403 /error/noindex.php
</LocationMatch>

Который после перезапуска httpd выдает ошибку 500. Я предполагаю, что это связано с разрешениями PHP, так как файл загружен от имени пользователя root и пользователь относится к учетной записи.

Файл noindex.html работает нормально и также устанавливается как root.

Я знаю, что альтернативой является использование каталога скелетов, но я не хочу идти по этому пути.

У кого-нибудь есть идеи, как мне этого добиться?

Спасибо.

EDIT:

Ошибка, которую я получаю в suPHP: UID скрипта "/var/www/error/noindex.php" меньше min_uid

Если я изменяю права доступа на 777, я получаю страницу с ошибкой 500, в журналах которой есть только это сообщение: Файл "/var/www/error/noindex.php" доступен для записи другим пользователям

РЕДАКТИРОВАТЬ 2:

Сделайте файл 400 или 660 и идентификатор пользователя 501 (lxlabs), теперь я получаю ошибку:

Несоответствие между целевым UID (1060) и UID (501) файла "/var/www/error/noindex.php"

Я полагаю, что lxlabs должен быть обычным пользователем, но может не иметь разрешений для этого каталога. Я не уверен, как настроить таргетинг на /home/kloxo/httpd/error/noindex.php, поскольку файл welcome.conf начинается в каталоге / var / www.

РЕДАКТИРОВАТЬ 3:

Это также может помочь. Мне удалось установить детали suPHP в объявлении Virtualhost. Нравится:

<Virtualhost 123.456.78.90:8888>
SSLEngine On 
SSLCertificateFile /home/kloxo/httpd/ssl/eth0___localhost.crt
SSLCertificateKeyFile /home/kloxo/httpd/ssl/eth0___localhost.key
SSLCACertificatefile /home/kloxo/httpd/ssl/eth0___localhost.ca

DocumentRoot   /home/kloxo/httpd/webmail/
<Ifmodule mod_suphp.c>
SuPhp_UserGroup lxlabs lxlabs
</Ifmodule>
</Virtualhost>

Может быть, я могу сделать что-то подобное в файле welcome.conf?

Ответы [ 3 ]

0 голосов
/ 14 сентября 2011

Решением является смена владельца и прав доступа к скрипту. Пользователь должен быть обычным пользователем.Разрешения должны быть 660 (rw для пользователя и группы) или 400 (r для только пользователя). Далее следует пояснение.

Вы используете suPHP, который представляет собой модуль Apache, который пытается защитить сценарии PHP, выполнивих с ограниченными разрешениями.Когда запрашивается скрипт, suPHP переключается на владельца скрипта перед его выполнением.

По очевидным причинам безопасности suPHP запрещает запуск скрипта от имени пользователя root.Таким образом, PHP-скрипты, принадлежащие пользователю root, не могут быть доступны через Apache.Вот что означает сообщение UID скрипта меньше, чем min_uid .suPHP действительно немного более универсален: он запрещает всем специальным пользователям.Linux сохраняет первые идентификаторы пользователей для специальных пользователей.Обычные пользователи имеют идентификатор выше 500 или 1000 (в зависимости от дистрибутива), в то время как root обычно имеет идентификатор 0.

suPHP, по-прежнему по соображениям безопасности, отказывается запускать сценарии, которые может изменить любой пользователь.В этом смысл сообщения Файл доступен для записи другим .Это поведение можно переключить с помощью параметра конфигурации allow_file_others_writeable, но не имеет особого смысла использовать ориентированный на безопасность модуль с небезопасной конфигурацией.В конце концов, основная цель suPHP - разделить приложения, у которых есть разные владельцы файлов.

0 голосов
/ 16 сентября 2011

После большого количества испытаний и исследований не представляется возможным иметь такой глобальный файл. Лучшее обходное решение - поместить файл в каталог скелета для каждого пользователя.

0 голосов
/ 14 сентября 2011

Я не совсем понял вашу среду, но сообщение об ошибке, похоже, из этой строки

Вам необходимо проверить конфигурационный файл suPHP (обычно /etc/suphp.conf) и посмотреть, каково значение min_uid (для которого по умолчанию установлено значение 100) Отрегулируйте значение в соответствии с вашими потребностями.

...