Почему /var/www/html доступен для записи только пользователю root (по умолчанию)?

Почему /var/www/html доступен для записи только пользователю root (по умолчанию)?

После настройки 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.

Связанный контент