%3F.png)
После настройки LAMP (на Debian) и изучения прав доступа к /var/www/html я был удивлен, обнаружив, что запись в него разрешена только пользователю root ( drwxr-xr-x 1 root root
).
Предположительно PHP-скрипты могут создавать файлы в /var/www/html, но наверняка PHP-скрипт (или его интерпретатор) не запускается от имени root? Может кто-нибудь помочь мне понять, в чем я не прав?
РЕДАКТИРОВАТЬ:
Я установил PHP с помощьюapt-get install php5-common libapache2-mod-php5 php5-mysql php5-cli
решение1
Скрипты PHP будут запускаться как:
- Пользователь, запускающий Apache, как определено директивой
User
в вашей конфигурации Apache (обычноapache
илиnobody
), если вы используетеmod_php
- Пользователь, запускающий PHP-FPM, если вы используете
php-fpm
Таким образом, пользователь, под которым будет выполняться PHP-скрипт, будет отличаться. Поэтому вам решать, как установить владельца и группу /var/www/html
(или где бы вы ни DocumentRoot
находились) соответственно.
Более того, вы можете вообще не желать, чтобы ваше PHP-приложение могло записывать (или перезаписывать) файлы в вашем DocumentRoot
, так как это может позволить посетителю скомпрометированного или небезопасного PHP-приложения получить привилегии удаленного выполнения кода. Поэтому вы несете ответственность за то, чтобы решить, является ли ваше PHP-приложение достаточно надежным, чтобы разрешить ему записывать файлы, которые Apache может обслуживать через Интернет или даже выполнять.
PHP почти никогда не будет (и никогда не должен!) запускаться от имени root по причинам, аналогичным упомянутым выше.
решение2
Centos/RHEL уже использовали root:root для /var/www/html. Это вопрос безопасности. Apache или nobody были незащищены. Нелегко взломать /var/www/html, когда он устанавливает root:root. Debian опоздал с использованием root:root для /var/www/html.