Обычно с 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, и каталоги) будут принадлежать одному пользователю, поэтому разрешения будут следующими:
Еще одно замечание: даже если вы установите 0400 для сценария PHP, его можно изменить другим сценарием PHP, принадлежащим тому же пользователю, поскольку он может просто запускать chmod из PHP, поэтому 0400 не безопаснее, чем 0644. Это применимо только при использовании suPHP.