chmod.ru

Основы chmod

chmod (анг. change file mode) — изменение режима доступа к файлам в операционных системах Unix, Linux и им подобных.

Примечание. Здесь и далее «файл» понимается в широком смысле этого слова — файл, каталог, символическая ссылка, сокет и др.

Существуют три группы пользователей: владелец файла (user), группа, к которой принадлежит владелец файла (group) и остальные (other)

Каждой из этих трех групп пользователей могут назначаться права доступа: чтение (read), запись (write) и выполнение (execute), которые сокращенно обозначают r, w и x соответственно. Если группа обладает тем или иным правом, то ставится символ, соответствующий этому праву, иначе ставится черточка. Для обычных файлов «выполнение» означает открытие файлов, для исполняемых файлов — их запуск, а для каталогов — просмотр содержимого.

Пример. Обладающий правами на чтение и запись обозначается так: rw-

Права для всех трех групп пользователей записываются слитно в той последовательности которой они указаны выше.

Пример. Владелец файла и группа, к которой он принадлежит обладают всеми правами, а остальные обладают правами на чтение и выполнение, chmod обозначается так: rwxrwxr-x

Помимо символьного формата записи прав доступа, описанного выше существует также числовой формат записи прав доступа, суть которого в более компактной записи прав в виде восьмеричного числа. Для этого надо в символьном формате буквы заменить на единицу, а черточки — на нули; полученное двоичное число надо представить в восьмеричном формате — это и будет chmod в числовом формате.

Пример. chmod задан так: rwxrwxr-x заменим на 111111101, полученное двоичное заменяем восьмеричным, получим числовой формат записи chmod — 775

chmod в php

chmod играет важную роль при программировании на языке php. Особого внимания заслуживают случаи работы с файлами, особенно при настройке движков сайтов (CMS), форумов, гостевых книг и пр. Заметим, что chmod используется языком php только в Unix-подобной операционной системе, для которой и описаны приведенные ниже примеры. Заметим, что хостинг, в основном, базируется на Unix-подобной операционной системе. В этих примерах показаны только принципы программирования в php при работе с chmod. В силу особенностей языка php права доступа в нем записывается только в числовом формате, поэтому рекомендуем символьный формат chmod предварять символом 0.

Читатели должны осознавать тот факт, что при программировании они должны использовать функции для определения наличия проверяемого файла, наличия переменных, приведения типов и пр.

Изменение chmod

chmod можно выставлять средствами языка php. Это можно делать только на уровне файловой системы сервера; изменение chmod для удаленных файлов не допускается.

bool chmod ( string filename, int mode )

Функция chmod() пытается изменить права доступа для filename на указанные в параметре mode. В случае успешного завершения функция возвращает true, в случае ошибки функция возвращает false. Поскольку числовой формат записи chmod является восьмеричным числом значение параметра mode рекомендуется предварять симоволом 0.

<?php
chmod("/contacts/index.php",0644); //правильно, установит chmod 644
chmod("http://chmod.ru/contacts/index.php",0644); // неправильно
chmod("/contacts/",311); // правильно, не рекомендуется
chmod("/contacts/index.php","rwxrwxr-x"); //неправильно
?>

В указанном примере первая функция установит chmod 644 для файла /contacts/index.php. Вторая функция возвратит false, так как нельзя указавать в качестве параметра удаленные файлы. Третья функция установит chmod 467 для каталога /contacts/; во избежание недоразумений лучше всегда записывать в качестве второго параметра восьмеричное число, предваряя его симоволом 0. Четвертая фунция возвратит false, так как в качестве второго параметра обятельно надо указывать числовое значение.

Определение chmod

Для определения chmod воспользуемся функцией fileperms().

int fileperms ( string filename )

Функция fileperms() возвращает информацию о filename либо false в случае ошибки. Заметим, что получение информации об удаленных файлах не допускается.

Функция fileperms() возвращает больше информации, чем нам требуется (ее мы не будем затрагивать). Нам требуется определить последние 9 бит. Для этого воспользуемся логическим оператором & и функцией decoct().

<?php
$perms = decoct(0777 & fileperms("/contacts/index.php")); //string(3)"644"
?>

Обращаем внимание, что функция decoct() возвращает переменную строкового типа (в которой записаны права доступа в числовом формате), поэтому при использовании полученных результатов в функции chmod() необходимо либо использовать функцию octdec(), либо не использовать функцию decoct(). Приведенные ниже два примера эквивалентны.

<?php
$perms = decoct(0777 & fileperms("/contacts/index.php")); //string(3)"644"
// некоторый код
chmod("/contacts/author.php", octdec($perms));
?>

В приведенном выше примере в переменной $perms записана строка, состоящая из трех символов. Данный способ необходимо использовать в случаях, когда необходимо получить chmod в числовом формате, а затем использовать переменную для изменения chmod.

<?php
$perms = 0777 & fileperms("/contacts/index.php"); //int(420)
chmod("/contacts/author.php", $perms);
?>

Данный пример предпочтительнее предыдущему, его необходимо использовать в случаях, когда переменная $perms используется исключительно для изменения прав доступа без промежуточных действий.

chmod из Windows

Достаточно часто перед людьми, встает задача изменения chmod на виртуальном хостинге посредством компьютера, работающего под управлением операционной системы Windows. Это можно осуществить различными способами. Рассмотрим наиболее популярные из них.

Примечание. Далее под понятием «кнока» будем понимать элемент интерфейса окна, выполненный в виде кнопки.

chmod и Cute FTP

Cute FTP является одним из наиболее популярных FTP-клиентов в операционной системе Windows, обладающий широким спектом возможностей, в частности, изменение прав доступа на удаленном сервере. Программа является условно-бесплатной (shareware) и без регистрации будет работать только 30 дней.

После запуска программы необходимо войти на FTP-сервер. Для этого удобно воспользоваться Site Manager’ом, окно которого выскакивает при первом запуске программы. Если соединение еще не создано, то необходимо его создать нажав на кнопку New, затем FTP Site... После этого необходимо в поле Label ввести название соединения (может быть произвольным), в поле Host address вводится адрес FTP-сервера без указания протокола (без ftp://) и слеша в конце. В поля Username и Password необходимо ввести учетное имя и пароль доступа соответственно. Для соединения с сервером следует нажать Connect.

Внимание. Cute FTP по умолчанию сохраняет пароли. Это небезопасно! Если не требуется сохранять пароль, то поле Password заполнять не требуется. В этом случае программа сама спросит пароль. Более подробно см. в руководстве к программе.

Cute FTP. Окно Site Manager

Если файлы расположены в табличном виде, то в столбце Attributes можно увидеть права доступа. Для включения табличного вида необходимо в меню выбрать View/View/Details. В указанном столбце все элементы содержат по 10 символов, — последние 9 из них и есть chmod в символьном формате.

Для изменения прав доступа необходимо выделить требуемые файлы, а затем вызвать контекстное меню, в котором выбрать Properties / CHMOD (горячая клавиша [Alt]+[Enter]). В появившемся окошке можно изменить права доступа на требуемые, после чего следует нажать кнопку Применить.

Cute FTP. Окно Properties (фрагмент)

chmod и Total Commander

Total Commander является одним из лучших файловых менеджеров для Windows, имеющий двухпанельный интерфейс. Среди возможностей программы выделим способность выполнять функции FTP клиента. Программа также является условно-бесплатной (shareware) и без регистрации будет работать только 30 дней.

Подключение к FTP серверу можно осуществить, выбрав в меню Net/FTP Connect (горячая клавиша [Ctrl]+[F]) либо Net/FTP New Connection... (горячая клавиша [Ctrl]+[N]). После соединения в столбце Attr последние три символа будут показывать chmod в числовом формате. Для изменения прав доступа выделите требуемые файлы, затем выберите в меню Files/Change Attributes... В появившемся окошке можно изменять права доступа.

Контакты

Для связи пользуйтесь электронной почтой <rozerot@chmod.ru> или формой обратной связи, расположенной ниже.

Имя (псевдоним):
e-mail: заполните, если хотите получить ответ
сайт:
Ваше сообщение: поле обязательно для заполнения

Valid XHTML 1.1
© 2007—2008 Rozerot. Допускается использование материалов сайта без предварительного уведомления администрации. Запрещается цитирование в печатных СМИ без ссылки на сайт chmod.ru, а в случае цитирования в глобальной сети интернет без ссылки и гиперссылки на этот сайт