Помощь » База знаний » Общие вопросы » Полезная информация для владельцев скриптов »
Для правильной работы PHP-скриптов и обеспечения безопасности данных необходимо установить определенные права доступа к файлам и директориям с помощью команды chmod или средствами FTP-клиента либо файлового менеджера контрольной панели хостинга. Как узнать, какое значение прав доступа нужно применить для достижения оптимального результата?
В файловых системах операционных систем типа UNIX (Linux, FreeBSD и т.п.) в свойствах каждого элемента файловой системы (файла или директории) содержится информация о его владельце и группе.
Владелец файла/директории — имя пользователя операционной системы, которому «принадлежит» файл или директория.
Группа — наименование группы пользователей операционной системы, членам которой предоставлен доступ к файлу или директории.
Запомните, что у каждого файла и директории владелец и имя группы могут быть различными. Например, если FTP-подключение и веб-сервер запускаются на хостинге различными пользователями (к примеру, ftp-user и Apache), то у файлов, загруженных по FTP, владельцем будет ftp-user, а у файлов, созданных с помощью PHP-скрипта (например, распакованные во время установки WebAsyst), владельцем будет Apache.
Каждому файлу и директории присваивается 3-значное число, определяющее, какой доступ разрешен владельцу, членам группы и всем остальным пользователям операционной системы:
Каждая цифра является суммой фиксированных значений доступа:
1 (обозначается также буквой x) — выполнение. Делает файл исполняемым (программой), а для директории позволяет изменять ее содержимое (например, создавать, удалять или переименовывать файлы внутри нее).
2 (обозначается также буквой w) — перезапись. Позволяет перезаписывать содержимое файла, а для директории позволяет выполнять ее переименование.
4 (обозначается также буквой r) — чтение. Позволяет считывать содержимое файла, а для директории — считывать список имен вложенных поддиректорий и файлов.
Пример
750 = (1+2+4)(1+4)()
В этом примере владельцу разрешены выполнение, перезапись и чтение (1, 2 и 4), членам группы — только выполнение и чтение (1 и 4), а остальным пользователям операционной системы доступ запрещен.
Функции каждого файла и директории в файловой структуре WebAsyst различны — доступ к некоторым достаточен в режиме чтения, другие необходимо иметь возможность перезаписывать с помощью PHP-скриптов либо по FTP. Перечень директорий и файлов и достаточные для них права доступа приведены в руководстве по установке скриптов WebAsyst в разделе «Защита WebAsyst после установки».
Это зависит от имени владельца и группы файлов/директорий, а также того, какой из пользователей входит в какую группу. Рассмотрим все это на примере.
Дано:
На сервере есть пользователи ftp-user и Apache и группа group, в которую входит пользователь ftp-user.
Владелец файла — Apache, имя группы — group.
Необходимо обеспечить возможность редактирования файла и PHP-скриптам (пользователь Apache), и FTP-клиенту (пользователь ftp-user). При этом любой другой доступ в целях безопасности должен быть запрещен.
Решение:
Права доступа владельца: поскольку владелец — тот же пользователь, который исполняет PHP-скрипты (в этом примере Apache), то ему нужно предоставить права чтения (4) и перезаписи (2) — для исполнения PHP-кода и перезаписи файла (например, при обновлении скриптов). Следовательно, первая цифра 2+4=6.
Права доступа группы: FTP-соединение работает от имени пользователя ftp-user, который входит в группу файла (group), значит, членам группы нужны права на чтение и перезапись, т.е. 2+4=6.
Права доступа остальных пользователей: поскольку все нужные права доступа уже предоставлены, больше ничего назначать не нужно, значит, оставляем 0.
Составляем окончательное число из отдельных значений и получаем 660 и выполняем команду chmod:
chmod 660 index.php
Дано:
Владелец директории — Apache, имя группы — group.
Решение:
Права доступа владельца: допустим, что владельцу (в данном случае PHP-скриптам «в лице» веб-сервера) для нормальной работы программы необходим иметь полный доступ к файлам внутри директории, следовательно, значение 1+2+4=7.
Права доступа группы: FTP-соединение работает от имени пользователя ftp-user, который входит в группу файла (group), значит, членам группы нужны права на чтение и выполнение (изменение содержимого директории), т.е. 1+4=5.
Права доступа остальных пользователей: поскольку все нужные права доступа уже предоставлены, больше ничего назначать не нужно, значит, оставляем 0.
Составляем окончательное число из отдельных значений и получаем 750 и выполняем команду chmod:
chmod 750 published
Замечание: при изменении имени владельца, имени группы либо при удалении пользователей из группы или добавлении новых пользователей в группу файла или директории может возникнуть необходимость в изменении прав доступа в соответствии с приведенным выше описанием.
Внимание: имена пользователей, групп и информация о членстве пользователей в группах в приведенных примерах могут отличаться от реальных настроек вашего сервера. За точной информацией обратитесь к своему системному администратору.
Некоторые хостинг-провайдеры накладывают ограничения на права доступа, которые разрешено назначать файлам и директориям. Попытки установить права доступа, выходящие за рамки таких ограничений, могут стать причиной возникновения ошибки сервера с кодом 500 или 403. Ознакомьтесь с соответствующими правилами хостинг-провайдера, прежде чем приступать к разграничению прав доступа. Чтобы не зависеть от ограничений виртуального хостинга, воспользуйтесь выделенным или собственным сервером для установки скриптов WebAsyst.