Что такое права на файлы и папки и как их изменить?

В UNIX-подобных операционных системах реализована развитая система прав, регулирующих доступ различных пользователей к файлам и директориям.

Уровни доступа к файлу

Каждый файл и каждая папка имеют три уровня доступа: право на чтение (обозначается буквой r), право на запись (т. е. редактирование и удаление файла; w) и право на исполнение (запуск) скрипта (x). Для папок эти уровни доступа имеют немного другое значение: право на чтение для директории означает, что пользователь может получить список файлов и папок, находящихся в этой директории, право на запись дает возможность создавать файлы в этой директории, а право на исполнение разрешает перейти в эту директорию.

В контексте веб-хостинга право на исполнение актуально только для папок и CGI-скриптов. Для обычных файлов (HTML-страницы, картинки, PHP-скрипты и т. п.) право на исполнение не имеет никакого смысла.

Способы записи прав доступа

Существует несколько способов записи прав доступа: буквенная и цифровая запись. Ниже приведена таблица соответствий этих двух типов:

Цифровая запись Буквенная запись Права
0 --- Ничего не разрешено
1 --x Исполнение
2 -w- Запись
3 -wx Запись и исполнение
4 r-- Чтение
5 r-x Чтение и исполнение
6 rw- Чтение и запись
7 rwx Чтение, запись и исполнение

Категории пользователей

Для каждого файла (и папки) существует три категории пользователей: владелец этого файла, группа пользователей, в которую входит владелец, и все остальные пользователи. Соответственно, каждый файл имеет три атрибута: права для владельца, права для группы и права для всех остальных.

Права для различных категорий пользователей, как в цифровом, так и в буквенном представлении, записываются последовательно: сначала права владельца файла, потом права группы владельца, а затем права всех остальных. Пример: 750 и rwxr-x--- (здесь владелец имеет полный доступ к файлу, группа владельца может открывать и запускать файл, но не может изменить и удалить его, всем остальным же доступ к файлу полностью запрещен).

В случае с веб-хостингом владельцем файла почти всегда являетесь вы — владелец аккаунта. От вашего же имени исполняются CGI-скрипты.

Но здесь есть одно исключение — это PHP-скрипты (в случае, если PHP запущен не через CGI). Они исполняются от имени веб-сервера, и относительно к вашим файлам PHP-скрипт находится в категории пользователей «все остальные». Это значит, что PHP-скрипт может сделать с вашими файлами только то, что разрешено «для всех». Например, если какая-либо папка на вашем аккаунте имеет права 755 (это стандартные права для папок), то PHP-скрипт не сможет создать в ней новый файл.

Верно и обратное: владельцем файлов, созданных с помощью PHP (например, файлов, загруженных через форму на сайте), является веб-сервер, а не владелец аккаунта. Поэтому вы не сможете изменять права на эти файлы, а также редактировать и удалять их, если на них не установлен доступ на запись для всех.

Наиболее часто встречающиеся права

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

Права доступа Область применения
755 rwxr-xr-x Стандартные права для папок и CGI-скриптов. Такие права должны быть установлены для всех папок, в которые нет необходимости записывать новые файлы из PHP. Кроме того, именно такие права должна иметь папка, в которой находятся CGI-скрипты, иначе они не будут работать.
644 rw-r--r-- Стандартные права для обычных файлов и PHP-скриптов. Отсутствие права на запись для всех, кроме владельца, дает уверенность в том, что файл не будет изменен или удален, например, из-за ошибки в PHP-скрипте или при взломе сайта, написанного на PHP.
777 rwxrwxrwx Полный доступ к файлу или папке для всех. Следует применять очень осторожно и лишь в одном случае: для папок, в которые будут загружаться файлы с помощью PHP (например, папка, куда будут загружаться аватары пользователей форума, картинки в фотогалерее и т. п. или папка для временных файлов).
666 rw-rw-rw- Доступ на чтение и редактирование файла для всех. Следует применять также очень осторожно и лишь в нескольких случаях:
  • для файлов, которые будут изменяться через PHP (например, файлы настроек скриптов или файлы, в которые программы на PHP будут записывать какие-то данные);
  • для файлов, загружаемых на сайт с помощью PHP (т. к. владельцем этих файлов будет веб-сервер, если на них будут установлены другие права, вы потом не сможете их изменить или удалить).
700 rwx------ Доступ к файлу или папке разрешен только для владельца. Может применяться для файлов и папок, в которых вы храните какие-либо конфиденциальные данные, и доступ к которым из браузера или PHP-скрипта крайне не желателен.

В этом, и есть преимущество платного хостинга от бесплатного

Хостинг "Джино" - 3 Gb за 33 рубля в месяц