Приложение В. Команды 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 в двоичной и восьмеричной системах счисления
Двоичная | Восьмеричная |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
Права 777 обычно устанавливают для каталогов. Это то же, что и 666, но с дополнительным правом просмотра содержимого данного каталога.
Команда chown используется для изменения владельца файла. Например:
chown user report.txt
После выполнения этой команды пользователь user станет владельцем файла report.txt. Вы можете изменить владельца файла только для тех файлов, владельцем которых вы являетесь. Пользователь root может изменить владельца для любого файла/ каталога.