html.okpython.net
HTML и CSS для начинающих

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 htmlCodes
<?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(). Все они находятся в «Функции для работы с файловой системой» -> «Файловая система».

Быстрый переход к другим страницам