Поиск

Права доступа к файлам

Поговорим о правах доступа к файлам. Данная тема, так же как безопасность и регулярные выражения, слишком обширна. В книге дается только тот мате риал, который позволит вам осваивать программирование на языке РНР даль ше. Если же вы хотите узнать о правах доступа к файлам больше, обратитесь к приложению С, где представлена некоторая дополнительная информация.

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

Обычно владельцу файла по умолчанию предоставляются права на запись и чтение, а остальным только на чтение. Исполнение файла один из основ ных вопросов безопасности, но, к счастью, оно не влияет на сценарии РНР (на языке Perl можно создать исполняемый файл, на РНР нельзя, так как интер претатор этого языка работает в виде модуля в составе сервера). Разрешение на запись в файле тоже может быть вопросом безопасности, и такие действия стоит санкционировать только в крайнем случае.

Изучая материал данной главы, мы будем работать с текстовым файлом data.txt, размещенным на сервере. В зависимости от конфигурации сервера (например, вы работаете на сервере провайдера или на своем собственном) стоит заранее установить соответствующие права доступа к этому файлу. Если файл не дает право делать то, что требует сценарий РНР, вы увидите сообще ние об ошибке (рис. 10.1).

Создадим файл data.txt.

Создание файла data.txt
Для выполнения действия сделайте следующее:

  1. Откройте текстовый редактор и создайте новый документ.
  2. Сохраните файл как data.txt, ничего в нем не печатая.
  3. Загрузите файл на сервер.

Эти действия могут показаться странными, но для того, чтобы задавать пра ва доступа к файлу, последний уже должен существовать. Обычно сначала зада ют права доступа к пустому файлу, и только в процессе работы Webприложе ния в него пишутся данные.

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

  • некоторые провайдеры предоставляют пользователям возможность рабо тать с панелями управления на основе Web. С помощью этих средств раз решается задавать не только права доступа к файлам и каталогам, но и многие другие параметры хоста;
  • если у вас есть возможность выполнять команды в командном процессо ре, зайдите с помощью клиента Telnet в каталог, где хранится файл data.txt, а затем посредством команды chmod (на сервере UNIX) измените права доступа к нему (рис. 10.2);
  • разрешается изменять права доступа к файлу с помощью БТРклиента
  • если вы работаете на своем сервере под Windows NT, разрешается изме нять права доступа к файлу, щелкнув по нему правой кнопкой мыши, вы брав команду Свойства, а затем вкладку Безопасность.
Если вы знакомы с интерпретатором командного языка и командой chmod, то на верняка понимаете, что означает число 0666 (рис. 10.2). А вот объяснение для тех, кто этого не знает. Ноль это обязательный префикс, обозначающий восьмерич ную систему счисления, а каждая шестерка соответствует правам записи (4) плюс чтения (2). Первая шестерка права владельца, вторая права группы, третья права всех остальных пользователей. Сравните: число 0777 позволяет всем кате гориям пользователей записывать (4), считывать (2) и исполнять (1). Это относит ся только к операционным системам семейства UNIX (Linux, Solaris).