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, 2014DmytroНовости

Сегодня мы рассмотрим различные режимы вызова 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

  • 💨 Make PHP Fast Again: 5 Ways to Supercharge Your Website
    💨 Make PHP Fast Again: 5 Ways to Supercharge Your Website

    Running a website on PHP? Congratulation...

  • 🚀 Talk Nerdy to Me: Self-Hosted Alternatives to Slack You’ll Actually Enjoy
    🚀 Talk Nerdy to Me: Self-Hosted Alternatives to Slack You’ll Actually Enjoy

    Slack really is great – until the free p...

  • 🚀 Time to ELevate: Say Goodbye to CentOS 6/7 and Hello to AlmaLinux 9/10
    🚀 Time to ELevate: Say Goodbye to CentOS 6/7 and Hello to AlmaLinux 9/10

    So, your server is still running CentOS...

  • 🐬 5 Modern MySQL-Compatible Databases Worth Knowing
    🐬 5 Modern MySQL-Compatible Databases Worth Knowing

    These days, saying “I’m using MySQL” is...

  • 🛠️ Mission Complete: NL Datacenter Maintenance Report!
    🛠️ Mission Complete: NL Datacenter Maintenance Report!

    Last week, while most people were enjoyi...

  • Disk Usage 🧮  in Linux: Tools, Tips, and That One Mysterious 20GB Log File
    Disk Usage 🧮 in Linux: Tools, Tips, and That One Mysterious 20GB Log File

    You’re running your awesome website, cru...

  • OpenSSH 10.0 Released – New Tricks for Your Trusted Terminal Buddy
    OpenSSH 10.0 Released – New Tricks for Your Trusted Terminal Buddy

    TL;DR: OpenSSH just hit version 10.0, an...

  • 🛠️ DUS Datacenter Maintenance Complete: New Servers In!
    🛠️ DUS Datacenter Maintenance Complete: New Servers In!

    Guten Tag, liebe Hosting-Freunde! 🇩🇪 Gue...

US/APAC Support

ITLDC

PO Box #800054
Aventura
FL 33280
USA

+1 561 2500001

[email protected]

EU Support

Smart Industries LLC

187E Warm Springs Rd B218
Las Vegas
NV 89119
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.