Что может chmod: как управлять доступами к файлам и папкам в Linux
Эффективное управление файлами и папками в операционной системе Linux невозможно без команды chmod. Эта команда определяет, кто и что может делать с объектами системы, помогая сохранять данные в целости и сохранности. О том, как применять команду chmod, легко и без проблем управлять доступами к элементам Linux с ее помощью, поговорим в этой статье.

Зачем нужна команда chmod
Команда chmod позволяет выдавать права доступа к файлам и папкам в Linux, а также тонко их настраивать с помощью битов защиты SetUID, SetGID и Sticky bit.
Название chmod — результат слияния слов в словосочетании change mode, которое переводится как «изменить режим».

Проще говоря, именно с ее помощью одному пользователю можно разрешить просматривать файлы в каталоге, а другому — позволить вносить в этот каталог изменения.
Обычно при настройке сервера с Linux команда chmod используется как один из инструментов поддержания безопасности данных и помогает реализовывать внутреннюю политику компании.
Права доступа
Права доступа к файлам и каталогам Linux бывают трех типов:
r — читать (read) — дает возможность просматривать файлы или каталоги;
w — записывать (write) — разрешает создавать, удалять и изменять их;
x — выполнять (execute) — позволяет входить в каталоги или выполнять файлы.
Все вышеуказанные типы доступа могут быть назначены основным видам пользователей системы. Их тоже три:
владельцы файла или каталога;
группы пользователей, обладающие правами на файл или каталог;
другие юзеры.
В итоге понять, кто и что может делать с тем или иным объектом системы, помогает символьная комбинация.

Например, сочетание rwxrw-r-- значит, что владелец наделен всеми правами на доступ к файлу, группа пользователей может его читать и выполнять, а остальные — только читать.
Синтаксис chmod и дополнительные параметры команды
Вне зависимости от того, какой из дистрибутивов Linux в работе, команда chmod универсальна и следует единым принципам. В общем виде она выглядит так:
Тут мы видим следующие составляющие:
опции — необязательные флаги chmod;
режим — набор разрешений, который нужно задать для элемента системы;
имя_файла — название файла или папки.
Опции
Теперь давайте чуть подробнее поговорим про то, какие опции команда chmod может применять к файлам и каталогам. Наиболее востребованными считаются:

Режим
Режим (mode) выступает ключевой сущностью команды chmod. Он характеризует модель прав доступа для трех категорий пользователей — владельца элемента системы, группы владельцев и остальных юзеров — и может быть представлен в виде символов или чисел.
Как узнать доступные разрешения
Is. Чтобы узнать актуальные разрешения системы, применяют команду ls. Ее удобно задавать совместно с флагом -l. Вместе они выводят перечень файлов и каталогов с данными об их разрешениях:
Вся команда целиком может выглядеть так:
В этом выводе:
-rw-r--r-- и drwxr-xr-x — это доступные разрешения;
префикс d в начале второй строки указывает на то, что это директория;
последующие столбцы содержат сведения о количестве жестких ссылок, владельце, группе, размере, времени последнего изменения и имени файла или директории.
В терминале Linux команды будут выглядеть следующим образом:

Getfacl. Другой способ просмотреть доступные права на файл — команда getfacl. С ней можно вывести список разрешений для определенного элемента.
Команда выглядит так:
В итоге понимаем, что у текстового файла file1 владельцу открыт доступ на чтение и запись, у группы и остальных пользователей — только разрешение на чтение.
Как изменять разрешения
Когда нужно обновить права доступа для файлов и каталогов через использование chmod, применяют так называемую символьную или числовую нотацию. О каждой из них чуть подробнее поговорим ниже.
Символьная нотация
Наиболее распространенный подход для указания разрешений — символьный. Он популярен за счет более удобного и читаемого ввода команд. При его использовании владелец составляет сочетание из букв и символов, чтобы указать системе, что ей делать с разрешением.
Применение символьной нотации подразумевает ввод:
В этом вводе:
[ugoa] — юзер или группа юзеров, к которым применяются изменения;

[+-=] — действия, которые нужно сделать с элементом системы;

[rwx] — сочетание прав:

Числовая нотация
При использовании числового подхода также указывают доступные разрешения файлов и директорий, но через комбинации цифр, где:
первая — доступные разрешения для владельца;
вторая — права доступа для группы;
третья — доступ к файлам для остальных пользователей.
Цифры рассчитываются путем сложения значений отдельных разрешений:

К примеру, если владельцу нужны права доступа для чтения и записи файла, группе — для чтения, записи и выполнения, а всем остальным — только для чтения, то команда будет такой:
Она расшифровывается следующим образом:
6 (4+2) — владелец файла обладает разрешениями на чтение и запись;
7 (4+2+1) — группа располагает доступами к чтению, записи и выполнению;
4 — другие пользователи имеют разрешение только на чтение.
Рекурсивное применение chmod
Иногда нужно одновременно обновить права для разных элементов. Для этого действия в Linux есть отдельная опция — рекурсивное изменение разрешений. Чтобы ею воспользоваться, необходимо совместно с командой chmod применить флаг -R (-recursive).
Например:
Такая команда установит права -rwxr-xr-x для всех файлов и подкаталогов внутри указанного каталога.
Как используется ключ --reference
Ключ --reference в команде chmod дает возможность скопировать права доступа из объекта системы в другой. Это может потребоваться, если нужно согласовать разрешения между элементами.
На практике ключ используется таким образом:
Здесь:
--reference=референсный_файл — то, откуда копируются разрешения;
целевой_файл — файл, которому передаются те же права доступа, что и у референса.
При этом важно помнить, что ключ --reference не добавляет права доступа, а полностью дублирует те, что есть.
Как отменить изменения, внесенные командой chmod
Для отмены любых изменений следует снова воспользоваться командой chmod, указав верные права доступа.
Алгоритм действий такой:
Определите правильные доступы и снова укажите команду chmod. Например, если необходимо отменить изменения на rw-r--r--, то числовое значение будет 644 (чтение = 4, запись = 2).
Откройте каталог и напишите указанную команду:
Рассмотрим процесс на примере.
Предположим, что имя нашего файла — a.txt. Тогда используем ls -l a.txt для отображения всех разрешений, которые есть у a.txt:

Далее возвращаем или отменяем изменения:

Итоги
Команда chmod пригодится для управления правами доступа к файлам и каталогам в любом из дистрибутивов Linux. Она универсальна и помогает как при работе на собственном железе, так и на арендованном VPS/VDS сервере.
Чтобы менять разрешения с помощью chmod, можно использовать не только основной синтаксис команды, но и дополнительные возможности в виде символьных и числовых нотаций. Это позволяет гибко настраивать ролевую модель системы и всегда иметь уверенность в том, что ценные данные надежно защищены.