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

Требования suPHP для всех файлов или только для скриптов PHP?

Обычно с PHP файлы / папки имеют разрешение 0777 когда мы хотим им написать. suPHP запрещает разрешение 0777. Вместо этого файлы должны иметь разрешение 0644 и папки имеют разрешение 0755. Однако это всегда формулируется по-разному.

Что такое точное правило и к каким файлам оно применяется? Если бы у меня был README файл где-нибудь во вложенном каталоге, необходимо ли обновить его разрешение, или оно применяется только к .php файлы?

Это зависит от владельца файла / каталога. Просто помните, что PHP в suPHP будет обращаться к сценариям PHP как пользователь-владелец, и эти сценарии PHP будут работать от имени этого пользователя, то есть все, что они читают или пишут, выполняется от имени этого пользователя. Таким образом, для запуска PHP-скрипты должны быть доступны только для чтения.

Однако ко всему, что не является сценарием PHP, доступ осуществляется от имени пользователя Apache (suPHP к ним не обращается), а это означает, что пользователю нужен как минимум доступ для чтения к файлам и доступ на чтение + выполнение к каталогам. Если эти файлы принадлежат обычному пользователю, они должны быть доступны для чтения всем (и исполняемыми для каталогов). Но если они принадлежат пользователю веб-сервера (никто, www-data, apache, в зависимости от дистрибутива), они должны быть доступны только для чтения / исполнения владельцем.

Примечание для каталогов: Apache (при обслуживании файлов, отличных от PHP) будет пытаться прочитать каждый каталог в пути, ища файлы .htaccess, если он не может исследовать каталоги, он завершится с ошибкой 403, даже если файл доступен для чтения. .

Итак, я думаю, что для большинства веб-сайтов или веб-приложений все файлы (файлы PHP и файлы, отличные от PHP, и каталоги) будут принадлежать одному пользователю, поэтому разрешения будут следующими:

  • Скрипты PHP: 0400 (u + r) или 0600 (u + rw), если PHP необходимо их изменить.
  • файлы, отличные от PHP: 0444 (ugo + r) или 0644 (u + rw, go + r), если PHP необходимо их изменить.
  • каталоги: 0555 (ugo + rx) или 0755 (u + rwx, go + rx), если PHP необходимо создать в них файлы.

Еще одно замечание: даже если вы установите 0400 для сценария PHP, его можно изменить другим сценарием PHP, принадлежащим тому же пользователю, поскольку он может просто запускать chmod из PHP, поэтому 0400 не безопаснее, чем 0644. Это применимо только при использовании suPHP.