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

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

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

1 ответ

Это зависит от владельца файла / каталога. Просто помните, что 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.

Другие вопросы по тегам