Страница 57 из 57
Приложение В. Команды chmod и chown: изменение прав доступа
В Linux есть понятие владельца файла (каталога) и прав доступа к нему. С данными понятиями мы познакомились в главе I, но подробно не рассматривали их. Здесь мы поговорим об этом подробнее.
В Linux существует три типа прав доступа: чтение (r - от read), запись (w - от write), выполнение (х от execute). Право выполнения для файла означает, что данному пользователю разрешается запускать этот файл на выполнение, а для каталога право выполнения означает разрешение просматривать оглавление данного каталога. Обычно право выполнения файла устанавливается для файлов программ.
Можно установить разные наборы прав доступа дли владельца файла, группы владельца и для всех остальных пользователей. Ниже демонстрируется, как это выглядит на практике. Откройте терминал и введите команду (имя файла можно ввести любое, главное, чтобы он существовал):
ls -l ‹имя_файла›
Система ответит, например, так; -rw-r--r-- 1 den den-group 6051 Ноя 28 14:44 ‹имя_файла›
В этом ответе нас больше всего интересует начало строки: -rw-r--r--. Это и есть права доступа. Начнем по порядку: первый символ (-) означает, что перед нами файл, а не каталог. Если бы перед нами был каталог, то вместо тире стоял бы символ d (от directory).
Идем дальше. Первая тройка символов (после дефиса) является правами доступа для владельца. Владельцу (пользователь den) разрешено читать (r) и изменять (w) файл, но запрещено запускать его на выполнение (третий символ - "-", а не "x").
Следующие два набора по три символа означают права доступа для членов группы владельца (группа den-group) и остальных пользователей (которые не являются владельцем файла или членами его группы). И те, и другие имеют право только читать файл (r--).
Нужно отметить, что в Linux любые права доступа cовсем не касаются пользователя root. Какие бы вы права доступами установили, пользователи root все равно получит полный доступ к любому файлу.
Наверняка вы уже побывали не на одном Linux-форуме и видели "магические" команды вроде:
chmod 666 файл
chmod 777 каталог
На самом деле - это никакие не заклинания, а обычные команды установки прав доступа. Команда chmod используется в системе для установки прав доступа к файлу или каталогу. Сначала указываются права доступа, а затем имя файла/каталога. Помните, что вы можете установить права доступа только к своим файлам, т.е. к файлам, владельцем которым являетесь именно вы. Пользователь root имеет право изменить права доступа к абсолютно любому файлу/каталогу.
Итак, разберемся с магией цифр. Посмотрим на набор прав: rw- r-- r--
Теперь заменим символы-буквы на 1, а дефисы - на 0. Получим:
110 100 100
А теперь загляните в таблицу двоичных/восьмеричных значений для целых чисел (табл. В.1).
Подставьте восьмеричные значения из табл. В.1 вместо двоичных, приведенных выше, - в итоге получится набор прав доступа 6 4 4 (владельцу разрешено чтение и запись, всем остальным - только чтение). Набор 666 соответствует правам доступа rw- rw- rw-. Это самый небезопасный вариант прав доступа, позволяющий всем желающим делать с файлом всё, что они хотят (вплоть до удаления). Поэтому права 666 лучше не устанавливать для файлов, содержащих что-то важное. Для таких файлов больше подойдут права 600, разрешающие операции с файлом только его владельцу.
Таблица В.1. Запись цифр 0-7 в двоичной и восьмеричной системах счисления