Apache права доступа php

Пользователь и группа www-data

После установки Apache нужно установить правильные права доступа для пользователей и групп. В этом нам помогут команды chown (изменить владельца) и chmod (изменить права доступа). Рассмотрим эти команды, а потом установим владельца для директории /var/www и права доступа к ней.

В Linux существует всего три вида прав — право на чтение ( read ), запись ( write ) и выполнение ( execute ), а также три категории пользователей, к которым они могут применяться — владелец файла ( user ), группа владельца ( group ) и все остальные ( others ).

Команда chmod

Изменяет прав доступа к файлу или директории.

chmod [опции] ВладелецГруппаДругие файл(ы)
  • Опция -R позволяет рекурсивно изменять права доступа для каталога
  • Владелец — права доступа в числовом виде для владельца
  • Группа — права доступа в числовом виде для группы
  • Другие — права доступа в числовом виде для других

Команда chown

Изменяет владельца и/или группу файла или директории.

chown [опции] владелец[:группа] файл(ы)

Опция -R — позволяет рекурсивно изменять владельца каталога.

Исходные данные

После установки web-сервера

  • Apache запущен под пользователем и группой www-data
  • Директории виртуальных хостов расположены в /var/www

Нам нужно обеспечить минимальные права для web-сервера (чтение директорий и файлов), чтобы он мог работать. И предоставить необходимые права на создание, редактирование и удаление файлов и директорий разработчику.

Читайте также:  What is java programming all about

Создадим пользователя developer и назначим ему основную группу www-data :

$ sudo useradd -m -s /bin/bash -g www-data developer

Зададим пароль для нового пользователя:

$ sudo passwd developer Введите новый пароль UNIX: Повторите ввод нового пароля UNIX: passwd: пароль успешно обновлён

Изменяем владельца

Устанавливаем владельца и группу для всех директорий /var/www :

$ sudo find /var/www -type d -exec chown developer:www-data <> \; -print /var/www /var/www/html /var/www/host1.loc /var/www/host2.loc

Устанавливаем владельца и группу для всех файлов /var/www :

$ sudo find /var/www -type f -exec chown developer:www-data <> \; -print /var/www/html/index.html /var/www/host1.loc/index.php /var/www/host2.loc/index.php

Здесь можно обойтись одной командой (но с двумя нагляднее):

$ sudo chown -R developer:www-data /var/www

Устанавливаем права

Устанавливаем права для всех директорий /var/www :

$ sudo find /var/www -type d -exec chmod 755 <> \; -print /var/www /var/www/html /var/www/host1.loc /var/www/host2.loc
  • Пользователь developer (разработчик) имеет право на чтение и запись директорий, потому что является их владельцем
  • Пользователь www-data (web-сервер) имеет право на чтение директорий, потому что принадлежит к группе www-data

Устанавливаем права для всех файлов /var/www :

$ sudo find /var/www -type f -exec chmod 644 <> \; -print /var/www/html/index.html /var/www/host1.loc/index.php /var/www/host2.loc/index.php
  • Пользователь developer (разработчик) имеет право на чтение и запись файлов, потому что является их владельцем
  • Пользователь www-data (web-сервер) имеет право на чтение файлов, потому что принадлежит к группе www-data

Для наглядности посмотрим на права всех файлов и директорий:

$ cd /var/www $ ls -laR .: итого 20 drwxr-xr-x 5 developer www-data 4096 ноя 15 14:54 . drwxr-xr-x 15 root root 4096 ноя 11 09:32 .. drwxr-xr-x 2 developer www-data 4096 ноя 11 09:32 html drwxr-xr-x 3 developer www-data 4096 дек 4 17:50 host1.loc drwxr-xr-x 2 developer www-data 4096 ноя 15 14:56 host2.loc ./html: итого 20 drwxr-xr-x 2 developer www-data 4096 ноя 11 09:32 . drwxr-xr-x 5 developer www-data 4096 ноя 15 14:54 .. -rw-r--r-- 1 developer www-data 10918 ноя 11 09:32 index.html ./host1.loc: итого 16 drwxr-xr-x 3 developer www-data 4096 дек 4 17:50 . drwxr-xr-x 5 developer www-data 4096 ноя 15 14:54 .. -rw-r--r-- 1 developer www-data 78 дек 4 17:34 index.php ./host2.loc: итого 12 drwxr-xr-x 2 developer www-data 4096 ноя 15 14:56 . drwxr-xr-x 5 developer www-data 4096 ноя 15 14:54 .. -rw-r--r-- 1 developer www-data 46 ноя 15 14:56 index.php

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

  • 1С:Предприятие (31)
  • API (29)
  • Bash (43)
  • CLI (99)
  • CMS (139)
  • CSS (50)
  • Frontend (75)
  • HTML (66)
  • JavaScript (150)
  • Laravel (72)
  • Linux (146)
  • MySQL (76)
  • PHP (125)
  • React.js (66)
  • SSH (27)
  • Ubuntu (68)
  • Web-разработка (509)
  • WordPress (73)
  • Yii2 (69)
  • БазаДанных (95)
  • Битрикс (66)
  • Блог (29)
  • Верстка (43)
  • ИнтернетМагаз… (84)
  • КаталогТоваров (87)
  • Класс (30)
  • Клиент (27)
  • Ключ (28)
  • Команда (68)
  • Компонент (60)
  • Конфигурация (62)
  • Корзина (32)
  • ЛокальнаяСеть (28)
  • Модуль (34)
  • Навигация (31)
  • Настройка (140)
  • ПанельУправле… (29)
  • Плагин (33)
  • Пользователь (26)
  • Практика (99)
  • Сервер (74)
  • Событие (27)
  • Теория (105)
  • Установка (66)
  • Файл (47)
  • Форма (58)
  • Фреймворк (192)
  • Функция (36)
  • ШаблонСайта (68)

Источник

Права доступа CHMOD для пользователей и групп в Apache

Недавно мне довелось прочесывать интернет в надежде найти подробную информацию о том, как правильно выставить права доступа для пользователей и групп в Apache с помощью chmod . Что мне удалось найти:

Основы

Есть три группы прав доступа к файлам/директориям, о которых вам стоит позаботиться:

  • Пользователь – что может делать владелец файла;
  • Группа – что могут делать пользователи отдельных групп;
  • Другие – что могут делать остальные пользователи.

У пользователей есть логины ( уникальные для каждого пользователя ). Пользователи могут быть частью группы.

Примечание: команда chmod принимает целые числа ( 0664 ), и каждая из цифр отвечает за определенные права доступа.

Сегодня я расскажу вам о том, как правильно использовать chmod-настройки . Chmod используются для изменения прав доступа к директории или файлу.

chmod -flags permissions /path/to/dir/or/file

Флаги

-R

chmod –R позволит рекурсивно пройтись по всей указанной директории и изменить права доступа для всех файлов и вложенных директорий.

Изменяем права доступа

Вы можете определять, для кого изменяете права доступа:

Вы можете добавлять или удалять права доступа при помощи следующих команд chmod :

Можно задавать следующие права доступа:

Эти знания можно использовать для настройки прав доступа в Apache :

  • Apache запущен как пользователь www-data в группе www-data ;
  • Корневой каталог сервера: /var/www .

Для начала

Нам нужно установить владельца/группу для корневого каталога ( и любых внутренних директорий и файлов ):

$ sudo chown -R www-data:www-data /var/www

Нужно установить правильные права доступа для пользователей и групп. Запускаем несколько общих команд, которые закрывают доступ, а затем открываем доступ, насколько нам требуется.

Сначала сделайте так, чтобы никто кроме текущего пользователя ( www-data ) не имел доступа к содержимому директории web-root . Мы используем ‘ go ‘, поэтому команда будет направлена к группам и другим пользователям (‘ group ‘ и ‘ other ‘). Также мы используем ‘ — ‘ для отключения прав доступа. Затем используется параметр ‘rwx ‘, чтобы запретить чтение, запись и исполнение.

Далее нужно разрешить пользователям из той же группы ( и ‘other’ ) открывать директорию /var/www . Это делается без рекурсивного подхода. Мы указываем ‘ group ‘ и ‘ other ‘, но используем параметр ‘ + ‘, чтобы разрешить исполнение ( chmod ‘x’ ).

Далее изменяем права доступа всех директорий и файлов в корневом каталоге для той же группы ( www-data ). На случай, если в ней есть файлы:

Теперь нужно произвести некоторые « сбросы ». C помощью команд chmod сделайте так, чтобы только один пользователь мог осуществлять доступ к контенту:

Сделайте так, чтобы любой пользователь из той же группы мог читать/записывать и выполнять директории и файлы в корневом каталоге на сервере:

Лично я дал группе право записывать – это нужно для тех пользователей, которые редактируют контент. Выглядит это следующим образом:

Зачастую вам даже не придется проделывать все это, но данная статья вполне способна помочь разобраться.

Источник

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

ITLDC

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

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

Источник

Оцените статью