В 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- |
Доступ на чтение и редактирование файла для всех. Следует
применять также очень осторожно и лишь в нескольких случаях:
|
| 700 | rwx------ | Доступ к файлу или папке разрешен только для владельца. Может применяться для файлов и папок, в которых вы храните какие-либо конфиденциальные данные, и доступ к которым из браузера или PHP-скрипта крайне не желателен. |
В этом, и есть преимущество платного хостинга от бесплатного