Оглавление

25.6. Права доступа в операционной системе UNIX

Большинство хостинговых площадок используют операционную систему семейства UNIX. В этой ОС для каждого объекта (файла или каталога) назначаются права доступа для каждой разновидности пользователей — владельца,  группы и прочих. Рассмотрим эту важную тему подробнее.

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

 

Права доступа к файлу определяются записью типа:
-rw-r--r--
Первый символ - означает, что это файл, и не задает никаких прав доступа. Далее три символа (rw-) задают права доступа для владельца (чтение и запись).  Символ  -  означает,  что  права  доступа  на  выполнение  нет. Следующие  три символа  задают права доступа для  группы (r--) — только чтение. Ну и последние  три  символа (r--)  задают права  для  всех  остальных пользователей (только чтение).

 
Права доступа к каталогу определяются такой строкой:
drwxr-xr-x

 

Первая буква (d) означает, что это каталог. Владелец может выполнять в каталоге любые действия (rwx), а группа и все остальные пользователи — только читать и выполнять поиск (r-x). Для того чтобы каталог можно было просматривать, должны быть установлены права на выполнение (x).

 
Кроме  того,  права  доступа  обозначаются  числом.  Такие  числа  называются маской прав доступа. Число состоит из трех цифр от 0 до 7. Первая цифра задает  права  для  владельца,  вторая —  для  группы,  а  третья —  для  всех  остальных пользователей. Например, права доступа -rw-r--r-- соответствуют числу 644.

 
Сопоставим числам, входящим в маску прав доступа, двоичную и буквенную записи (табл. 3).

 
Таблица 3. Права доступа в разных записях

Восьмеричная цифраДвоичная записьБуквенная запись
0000---
1001--x
2010-w-
3011-wx
4100r--
5101r-x
6110rw-
7111rwx

 

Например,  права  доступа  rw-r--r--  можно  записать  так: 110 100 100,  что переводится в число 644. Таким образом, если право предоставлено, то в соответствующей позиции стоит 1, а если нет — то 0.

 
Для  файлов,  не  являющихся cgi-программами —  таких  как html, shtml  или php —  права  доступа  могут  быть  установлены  равными 644 (-rw-r--r--)  (запись - чтение для владельца и только чтение для всех остальных). 

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

 
Если Web-сервер  запускает php-скрипты от имени  владельца, то для  записи данных в файл вполне достаточно поставить на этот файл права доступа 600 (rw-------). Если, конечно, файл не используется для чтения всеми пользователями.

 
Права доступа на каталоги рекомендуется устанавливать в 755 (rwxr-xr-x).

 
Чтобы  изменить  права  доступа  из  скрипта,  необходимо  воспользоваться функцией chmod(). Функция имеет следующий формат:

chmod (<Путь к файлу>, <Права доступа>);


Права доступа задаются в виде числа, перед которым следует указать 0 (это соответствует восьмеричной записи числа):

chmod ($path, 0644);

Для определения прав доступа можно использовать следующие функции:
□ is_readable(<Путь к файлу>) возвращает true, если файл доступен для чтения;
□ is_writable(<Путь к файлу>) возвращает true, если файл доступен для записи;
□ is_executable(<Путь  к  файлу>)  возвращает  true,  если  файл  является выполняемым.

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити