Страницы

воскресенье, 14 июня 2015 г.

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

Зачем я вообще взялся за эту статью? Частенько сталкиваюсь с ситуацией, когда начинающие кодеры веб-страниц задают примерно такой вопрос: «Я тут себе форум бесплатный скачал. Хочу его установить. А в настройках написано, что к отдельным файлам и целым папкам надо установить какие-то права доступа. Указывают цифры 777 или 755. А что это такое? Где и как устанавливаются эти права?».

Знакомая ситуация? Ходил-бродил я по форумам и понял, отвечать на эти вопросы через каждую неделю-две — скучно. Так и родилась эта статейка. Итак, приступим…
Но в самом начале скажу, не советую я вам пользоваться сторонними скриптами, которые требуют прав 777. Позже вы сами поймете почему.


Откуда же «ноги растут» у проблемы c правами доступа? Могу с полной ответственностью заявить: во всем виноват UNIX. Именно от его прав доступа к файлам и папкам всё и исходит. Немного теории. Все пользователи в юниксе располагаются по группам. Одни и те же пользователи могут членствовать сразу в нескольких группах. Права доступа им можно раздавать как для целых групп, так и индивидуально. Администраторы (входят в группу wheel), это — пользователи, которые могут присваивать те, или иные права доступа к файлам себе и остальным пользователям. Это просто и удобно. Предположим, есть группа пользователей, которым разрешено лишь читать документы из определенной папки и совсем нет никакого доступа в другие места системы.

Итак, первое: права доступа различны у разных групп пользователей и второе: эти права делятся по трем категориям (право на чтение файла, право на запись в файл, право на запуск файла, как программы). В этом месте мне прийдется сделать отступление от темы.

Самое место поговорить о двоичных числах и двоичной системе счисления. Не волнуйтесь, я затрону эту тему лишь вскользь, ровно настолько, насколько это необходимо в данной статье. В двоичной арифметике всего два числа, которые можно записать одним символом, это — 0 и 1. А как же в такой системе записать число 2, 3 и т.д.? Да также, как и в привычной нам десятичной. Когда все числа от 0 до 9 исчерпаны, далее числа мы составляем из двух и более цифр. Так же мы поступим и здесь. Число 2 в двоичной системе счисления, это — 10. Я приведу соответствие десятичных чисел и двоичных для большей наглядности.

 Десятичные 0 1 2 3 4 5 6 7
 Двоичные 0 1 10 11 100 101 110 111
Здесь видно, когда не хватает 2 цифр, числа уже состоят из 3 цифр и т.д. Десятичное число 8, например, уже выглядело бы в двоичной системе как 1000. Честное слово, на этом о двоичных числах всё. Возвращаемся к нашей теме.

Помните, пару абзацев назад я писал о трёх категориях прав доступа к файлам? Это были чтение, запись и запуск. Если условиться, что разрешение в любой из этих категорий кодируется единицей (1), а запрет нулём (0), то несложно заметить, что закодировать разрешение читать файл и запрет записи и запуска можно тремя цифрами: 100. А разрешить всё тремя единичками: 111. Давайте вспомним приведенную выше таблицу соответствия двоичных чисел привычным нам десятичным. Первый пример, право только на чтение (100) можно, если принять записи из ноликов и единиц за двоичные числа, записать как четверку. Двоичное число 100 = 4 десятичному. Второй пример с тремя единицами, можно записать как десятичное 7.

Именно так и появляются цифры в тех самых правах доступа к файлам: семёрки и пятёрки, четвёрки и нолики. Но внимательный читатель заметит: «Секундочку, а почему же этих цифр три? Почему, говоря о правах, пишут 777 или 755?» И, конечно, будет прав. Дело здесь вот в чём. У каждого файла в юниксе есть хозяин. Это либо пользователь, создавший его, либо тот, кого администраторы указали в данном качестве. Скажем, администратор создает файл и назначает его хозяином рядового пользователя из какой-то группы. С этого момента данный пользователь сам может назначать права доступа к этому файлу другим пользователям системы. В этой связи, все пользователи делятся на три основных категории: хозяин файла, те кто входит с ним в одну группу, все остальные. Для каждой их этих категорий права доступа указываются отдельной цифрой. Вот их три и получается.

Приведем пример: У файла установлены права 755. Первая цифра — 7, это значит, что хозяин имеет на файл все права: чтение, запись и запуск (7 — 111). Вторая цифра — 5, пользователи из одной с хозяином группы имеют возможность читать и запускать файл, но не могут в него писать (5 — 101). Аналогично и все остальные — третья цифра тоже пятерка.

Часто пишут о правах доступа не в цифрах, а буквами. В этом случае права обозначают так: r (read — чтение), w (write — запись), x (execute — запуск). Если того или иного права нет, вместо буквы пишут знак минус. Используя такую форму записи, можно права доступа 755, например, обозначить так: rwxr-xr-x. Такая запись многим покажется более наглядной. Что ж, может и так.

В юниксподобных ОС для задания прав доступа к файлам служит команда chmod. О том как ей пользоваться я здесь писать не стану (это выходит за тему данной статьи). Напомню лишь о том, что сайты многих из вас, возможно распологаются именно на таких серверах. Узнать это можно, например связавшись с вашим хостером (компанией, предоставившей вам хостинг). Если окажется, что сайт у вас расположен на сервере под управлением Windows, вам также придется задавать вашим файлам и папкам права доступа, хотя раньше на таких веб-серверах всё сводилось к ситуации, когда всё разрешено — 777.

Кто-то, возможно посетует, что я не написал здесь о том как выставить всё же права доступа к файлам? Что ж, могу сказать одно, файлы на сервер можно выложить несколькими способами, точнее используя разные протоколы. Популярными являются ftp и ssh. Второй часто называют шелом. Если ваш хостер позволяет им пользоваться, вы сможете в этом случае воспользоваться юниксовой командой chmod для указания прав доступа к вашим файлам. Если же вы выкладываете файлы по ftp-протоколу, то, скорее всего, для этой цели используете какую-нибудь программу. В ней наверняка есть возможность выставить права доступа к файлам, которые вы закачали на сайт. Причем разные программы используют для этого обе формы записи и буквенную и цифровую. Вам остается лишь узнать как именно выставляются эти пресловутые права вашей любимой программой. А я попытался объяснить что означают цифры и буквы в этих записях. Дерзайте.

Комментариев нет:

Отправить комментарий