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

почему файлы должны быть доступны для чтения всем, чтобы Apache мог их обслуживать.

почему файлы должны быть доступны для чтения всем, чтобы Apache мог их обслуживать?

Я бы подумал, что если они принадлежат, купите пользователя или группу Apache. И файлы доступны для чтения и исполнения, что позволяет Apache обрабатывать файлы.

Как обрабатываются запросы к Apache. Назначен ли им пользователь-гость или никто, или запросы принадлежат Apache.

Любая документация, кроме базовой, как изменить группы пользователей и разрешения, была бы хороша. Моя проблема не в изменении разрешения, а в понимании того, как обрабатываются запросы и почему файлы должны быть доступны для чтения всем.

Это не вопрос об Apache и способах чтения файлов, а об общем администрировании * NIX и использовании chmod.

Файлы / каталоги в системах * nix имеют владельца и связанную с ним группу (chown). К ним также прикреплены биты безопасности, которые определяют следующие атрибуты:

  • Разрешения владельца
  • Разрешения группы
  • Разрешения для всех остальных

Если у Apache нет разрешений в одной из этих категорий, он не сможет прочитать файл.

См. Следующие статьи в Википедии о chmod и chown:

http://en.wikipedia.org/wiki/Chmod

http://en.wikipedia.org/wiki/Chown

Запросы Apache обрабатываются процессом, работающим под UID и GID, определенными в User и Group директивы в httpd.conf. Те же правила разрешений, которые применяются к пользовательским процессам, применяются к процессам Apache.

Поэтому, если файлы, обслуживаемые Apache, не принадлежат или не доступны для чтения UID (или GID), в котором запускается Apache, доступ запрещается, если не установлен бит доступа для чтения. Если файлы принадлежат и доступны для чтения UID (или GID), в качестве которого запускается Apache, то бит доступа для чтения не требуется. Кроме того, UID (или GID) Apache должен иметь разрешения на выполнение для всех родительских каталогов обслуживаемых файлов.

Исключением являются сценарии CGI, которые запускаются под управлением suEXEC Модуль Apache, и в этом случае процесс выполняется под UID и GID выполняемой программы. В этом случае программы CGI не должны быть доступны для чтения всем, они должны быть доступны для чтения и выполнения пользователем.

Они не должны быть такими. Достаточно, если у пользователя apache есть доступ на чтение.

Однако имя пользователя может отличаться. В семействе RedHat это «apache», в Ubuntu - «www-data».

Проверьте свой список процессов и посмотрите, с какими пользователями работает apache. Также проверьте свой файл httpd.conf и просмотрите директивы для пользователей и групп.