PHP :: Определение прав доступа к файлам и папкам
При размещении файлов сайта на веб-сервере Unix разработчик сталкивается с необходимостью определения прав доступа для каждого отдельного файла или каталога. Права доступа определяют кто и что может делать с данным файлом или каталогом. Существуют три основных вида прав доступа:
- чтение содержимого файла или просмотр перечня имен файлов в каталоге;
- запись файла или создание и удаление файлов из каталога;
- запуск файлов (например, скриптов) или доступ к файлам в каталоге.
Все перечисленные виды прав назначаются одной из трех групп пользователей (отношение пользователей к той или иной группе определяется сервером в момент их подключения к нему):
- user (владелец файла) – это пользователь, который создает данный файл или папку, и затем подключается к серверу, например, по протоколу FTP под своим именем и паролем;
- group (группа, к которой принадлежит владелец файла) – это другие пользователи, которые также подключаются к серверу по протоколу FTP и пытаются получить доступ к файлам или каталогам непосредственного владельца;
- other (все остальные пользователи) – это все посетители сайта, которые заходят на него через свой браузер.
Сами права доступа обозначаются либо при помощи букв r (чтение), w (запись), x (исполнение) в формате ixxxyyyzzz, либо при помощи трехзначного числа в восьмеричной системе счисления (цифры от 0 до 7) в формате 0nnn. Первая группа букв или цифра устанавливают права для владельца файла, вторая – для группы, а третья – для всех остальных. Что касается первой буквы в символьном формате, то она указывает на то, что права доступа назначаются либо директории, тогда ставится буква d, либо обычному файлу, тогда ставится дефис -. Если вместо буквы указан дефис, то данный вид прав для соответствующей группы отсутствует. Например, файл с правами доступа -rwxrwxrwx или 0777 могут читать, записывать и запускать все группы пользователей, а вот директорию с правами доступа drwxr--r-- или 0744 может просматривать, удалять и создавать в ней файлы, а также получать доступ к файлам только владелец. Остальным группам разрешается лишь просмотр каталога. Реальный пример отображения прав доступа к файлам на хостинге показан на рис. №1.
Рис. №1. Пример отображения прав доступа на сервере
Нас будет интересовать числовой формат определения прав доступа к файлам и каталогам, расшифровка цифр которого представлена в таблице №2.
Числовой формат | Символьный формат | Права доступа |
---|---|---|
0 | --- | Права отсутствуют |
1 | --x | Только выполнение |
2 | -w- | Только запись |
3 | -wx | Запись и выполнение |
4 | r-- | Только чтение |
5 | r-x | Чтение и выполнение |
6 | rw- | Чтение и запись |
7 | rwx | Чтение, запись, выполнение |
Таблица №2. Таблица прав доступа в цифровом формате
Теперь, когда мы получили некоторое представление о правах доступа к файлам и каталогам, продемонстрируем определение прав доступа к файлу на примере №3.
<?php echo '-------- fileperms() -------- <br><br>'; //fileperms()- возвращает информацию о правах доступа в виде 10-го //числа (или false). После перевода в восьмеричное число, последние //4 цифры будут содержать сведения о правах доступа, а также //(на большинстве платформ) инф-цию о типе файла. Например, для файла //test_2.php на рис. 9.1 получим 33188 или в 8-й 100644 echo substr(decoct(fileperms('test_2.php')), -4); //Выведет 0644 echo '<br><br>'; echo '-------- chmod() -------- <br><br>'; //chmod() - изменяет режим доступа к файлу и возвращает true|false chmod('test_2.php', 0777); //Разрешили всем все права chmod('test_2.php', 0744); //Владельцу все, остальным только чтение chmod('test_2.php', 0755); //Владельцу все, остальным чтение и запись ?>
Пример №3.
Также обратите внимание на функции chown(), chgrp(), umask(). Все они находятся в «Функции для работы с файловой системой» -> «Файловая система».
Быстрый переход к другим страницам
- Подключение внешних файлов в PHP
- Определение прав доступа к файлам и папкам в PHP
- Простая отправка текстовых данных в PHP
- Вернуться к оглавлению учебника