US: +1 561 2500001/EU: +359 2 4925555 LiveChat
[email protected] Sign Up Login
ITLDC
  • SSD VDS
  • HD VDS
  • Серверы
  • Хостинг
  • Поддержка
  • Блог
  • Контакт
  • [EN]
  • [UA]
  • SSD VDS
  • HD VDS
  • Серверы
  • Хостинг
  • Поддержка
  • Блог
  • Контакт
  • [EN]
  • [UA]

Apache и разные режимы вызова PHP - какие права на файлы нужны?

Apache и разные режимы вызова PHP — какие права на файлы нужны?

Мар 3, 2014DmitryНовости

Сегодня мы рассмотрим различные режимы вызова PHP и использование различных worker-ов популярного вэбсервера Apache с точки зрения необходимых прав доступа для файлов и каталогов. Отметим, что обычно требуются разные права для чтения (то есть — исполнения PHP-кода и отдачи объектов) и для записи (например, для загрузки изображений и изменения файлов средствами CMS). Пожалуйста, внимательно изучите принципы формирования прав (например, прочитайте отличную статью на Wikipedia), чтобы было понятно, например, что означают права файла 640 (u=rw,g=r,o=). Отметим, что ниже значения прав доступа указаны, скажем так, “примерно” — действительно, с ними все будет работать, но есть потенциал для тонкой настройки, если пользователь разобрался с правами, процессами и масками.

Обычный вариант — Apache+mod_php

Это обычный, стандартный вариант. Apache работает от пользователя apache или аналогичного (www, httpd, apache22 — имя пользователя зависит от используемой ОС). Соответственно, PHP код интерпретируется модулем с правами данного пользователя. В этом случае для исполнения кода достаточно прав на чтение файлов и входа в директории. Это можно представить, как xx4 (a+r) для файлов и xx5 (a+x) для директорий. Расшифруем значения — мы даем возможность всем пользователям (поле a) права на чтение файлов (+r), а для директорий — на чтение и переход в них (+x).

Для записи файлов (загрузки, записи в файлы кэширования и проч.) необходимо либо дать для необходимого файла/директории соответствующие права (xx6 для файлов, xx7 для директорий), либо сменить владельца файла/каталога на пользователя, с правами которого работает apache. Второй способ единственно возможен, если есть права суперпользователя — в UNIX-системах пользователь, отличный от root, не может сменить владельца файлов.

Резюме — Apache+mod_php

  • запрос приходит к сайту пользователя ivan
  • вэбсервер работает с правами пользователя apache (либо аналогичного httpd, apache22, www)
  • php работает с правами пользователя apache
Apache-itk+mod_php

В подобных конфигурациях используются модифицированный код Apache, позволяющий менять пользователя, с правами которого работает процесс, в зависимости от виртуального хоста. Это позволяет при запросе к виртуальному вэбсерверу пользователя ivan запустить отдельный процесс вэбсервера с правами пользователя ivan. В данном случае все упрощается — для чтения достаточно минимальных прав (444 для файлов, 555 для директорий). Отметим, что не только PHP исполняется, но и абсолютно все операции в рамках запроса производятся с правами пользователя ivan.

Резюме — Apache-itk+mod_php

  • запрос приходит к сайту пользователя ivan
  • вэбсервер работает с правами пользователя ivan
  • php работает с правами пользователя ivan
Apache+FastCGI

Использование схемы с FastCGI (или с CGI) наиболее популярно в том случае, если есть необходимость получить не только достойную производительность, но и контроль за выделяемыми для сайта или пользователя ресурсами. Наиболее часто в реализации данной конфигурации используется специальный модуль к вэбсерверу mod_fcgid. Запрос поступает к Apache, который работает с правами пользователя www (как в “стандартном” варианте, см. выше). Если запрос может быть обработан внутренними средствами apache (допустим — чтение png-файла с диска и вывод прочитанных данных в ответе на http-запрос), это происходит. В том случае, если нужно выполнить соответствующий скрипт — запрос передается соответствующему интерпретатору, который работает независимо от вэбсервера. В наиболее распространенном случае (если используется apache с mod_fcgid и PHP), код PHP исполняется с правами пользователя-владельца виртуального хоста.

Таким образом, картинки и прочие “простые” файлы должны быть доступны для чтения вэбсервером (права, как минимум, 444 на файлы и 555 на директории), php-файлы могут иметь права 400, а для загрузки файлов или редактирования достаточно, чтобы пользователь ivan мог изменять или создавать файлы в необходимой директории.

Резюме — Apache+FastCGI

  • запрос приходит к сайту пользователя ivan
  • вэбсервер работает с правами пользователя apache
  • php работает с правами пользователя ivan
Apache-ITK+FastCGI

К сожалению, данная конфигурация нежизнеспособна по техническим причинам. Не стоит использовать одновременно apache-itk и mod_fcgid, вэбсервер не сможет запускать корректно интерпретатор PHP.

← Какую операционную систему выбрать?
Чем отличаются хостинг, VPS, VDS и выделенный сервер? →

Recent Posts

  • ITLDC News — December 2022
    ITLDC News — December 2022

    We did not publish updates for November...

  • Let’s start our biggest SALE!
    Let’s start our biggest SALE!

    We will not complicate and publish some...

  • ITLDC News — October 2022
    ITLDC News — October 2022

    It's time to make a brief report on what...

  • Price adjustments for selected services
    Price adjustments for selected services

    Since the autumn of last year, the price...

  • Support for our friends and colleagues in Ukraine
    Support for our friends and colleagues in Ukraine

    Dear friends and colleagues from Ukraine...

  • Новый датацентр — UA2.IEV: Kyiv, Ukraine!
    Новый датацентр — UA2.IEV: Kyiv, Ukraine!

    Мы продолжаем увеличивать количество наш...

  • CyberMonday — продолжаем марафон скидок!
    CyberMonday — продолжаем марафон скидок!

    Черная Пятница прошла, но не будем остан...

  • Black Friday 2021 — скидки до 50% на все SSD VDS!
    Black Friday 2021 — скидки до 50% на все SSD VDS!

    Черная Пятница официально началась! На п...

EU Support

ITLDC EU Team

PO Box #201
Burgas
Burgas reg. 8000
Bulgaria

+1 561 2500001

[email protected]

US/APAC Support

ITLDC NOAM Team

PO Box 800054
Aventura
FL, 33280
USA

+1 561 2500001

[email protected]

Services

  • SSD VDS
  • Dedicated Servers
  • Shared Hosting
  • Colocation
  • DDoS Protection
  • SSL Certificates
  • Backup Storage
  • Reselling

Support

  • Get Help
  • ITLDC Status
  • Looking Glass
  • Our SLA
  • Datacenters
  • FAQ & Knowledgebase
  • Data Security
  • Contact us

© Copyright 1995-2019 ITLDC Team. You can freely use or share information from this site with a hyperlink to the original page.