yandex

Что может chmod: как управлять доступами к файлам и папкам в Linux

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

Инструкции
Иллюстрация для статьи на тему «Что может chmod: как управлять доступами к файлам и папкам в Linux»

Зачем нужна команда chmod

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

Название chmod — результат слияния слов в словосочетании change mode, которое переводится как «изменить режим».

Дарим до 20 000 бонусов
Дарим до 20 000 бонусов
4 000 бонусов — физическим лицам, 20 000 бонусов — юридическим

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

Обычно при настройке сервера с Linux команда chmod используется как один из инструментов поддержания безопасности данных и помогает реализовывать внутреннюю политику компании. 

Права доступа

Права доступа к файлам и каталогам Linux бывают трех типов: 

  • r — читать (read) — дает возможность просматривать файлы или каталоги;

  • w — записывать (write) — разрешает создавать, удалять и изменять их;

  • x — выполнять (execute) — позволяет входить в каталоги или выполнять файлы.

Все вышеуказанные типы доступа могут быть назначены основным видам пользователей системы. Их тоже три: 

  • владельцы файла или каталога;

  • группы пользователей, обладающие правами на файл или каталог;

  • другие юзеры.

В итоге понять, кто и что может делать с тем или иным объектом системы, помогает символьная комбинация. 

Символьная комбинация для определения прав доступа к элементам LinuxСимвольная комбинация для определения прав доступа к элементам Linux

Например, сочетание rwxrw-r-- значит, что владелец наделен всеми правами на доступ к файлу, группа пользователей может его читать и выполнять, а остальные — только читать. 

Синтаксис chmod и дополнительные параметры команды

Вне зависимости от того, какой из дистрибутивов Linux в работе, команда chmod универсальна и следует единым принципам. В общем виде она выглядит так: 

Тут мы видим следующие составляющие: 

  • опции — необязательные флаги chmod; 

  • режим — набор разрешений, который нужно задать для элемента системы;

  • имя_файла — название файла или папки.

Опции

Теперь давайте чуть подробнее поговорим про то, какие опции команда chmod может применять к файлам и каталогам. Наиболее востребованными считаются:

Ключевые опции chmodКлючевые опции chmod

Режим

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

Как узнать доступные разрешения

Is. Чтобы узнать актуальные разрешения системы, применяют команду ls. Ее удобно задавать совместно с флагом -l. Вместе они выводят перечень файлов и каталогов с данными об их разрешениях:

Вся команда целиком может выглядеть так:

В этом выводе: 

  • -rw-r--r--  и drwxr-xr-x — это доступные разрешения;

  • префикс d в начале второй строки указывает на то, что это директория; 

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

В терминале Linux команды будут выглядеть следующим образом:

Применение команды ls -l Применение команды ls -l

Getfacl. Другой способ просмотреть доступные права на файл — команда getfacl. С ней можно вывести список разрешений для определенного элемента. 

Команда выглядит так:

В итоге понимаем, что у текстового файла file1 владельцу открыт доступ на чтение и запись, у группы и остальных пользователей — только разрешение на чтение.

Как изменять разрешения

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

Символьная нотация

Наиболее распространенный подход для указания разрешений — символьный. Он популярен за счет более удобного и читаемого ввода команд. При его использовании владелец составляет сочетание из букв и символов, чтобы указать системе, что ей делать с разрешением.

Применение символьной нотации подразумевает ввод: 

В этом вводе: 

  • [ugoa] — юзер или группа юзеров, к которым применяются изменения;

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

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

Blog image

Числовая нотация

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

  • первая — доступные разрешения для владельца;

  • вторая — права доступа для группы; 

  • третья  — доступ к файлам для остальных пользователей.

Цифры рассчитываются путем сложения значений отдельных разрешений:

Расчет числовой нотацииРасчет числовой нотации

К примеру, если владельцу нужны права доступа для чтения и записи файла, группе — для чтения, записи и выполнения, а всем остальным — только для чтения, то команда будет такой:

Она расшифровывается следующим образом:

  • 6 (4+2) — владелец файла обладает разрешениями на чтение и запись;

  • 7 (4+2+1) — группа располагает доступами к чтению, записи и выполнению;

  • 4 — другие пользователи имеют разрешение только на чтение.

Рекурсивное применение chmod

Иногда нужно одновременно обновить права для разных элементов. Для этого действия в Linux есть отдельная опция — рекурсивное изменение разрешений. Чтобы ею воспользоваться, необходимо совместно с командой chmod применить флаг -R (-recursive). 

Например:

Такая команда установит права -rwxr-xr-x для всех файлов и подкаталогов внутри указанного каталога.

Как используется ключ --reference

Ключ --reference в команде chmod дает возможность скопировать права доступа из объекта системы в другой. Это может потребоваться, если нужно согласовать разрешения между элементами. 

На практике ключ используется таким образом: 

Здесь:

  • --reference=референсный_файл — то, откуда копируются разрешения;

  •  целевой_файл — файл, которому передаются те же права доступа, что и у референса. 

При этом важно помнить, что ключ --reference не добавляет права доступа, а полностью дублирует те, что есть.

Как отменить изменения, внесенные командой chmod

Для отмены любых изменений следует снова воспользоваться командой chmod, указав верные права доступа. 

Алгоритм действий такой:

  1. Определите правильные доступы и снова укажите команду chmod. Например, если необходимо отменить изменения на rw-r--r--, то числовое значение будет 644 (чтение = 4, запись = 2).

  2. Откройте каталог и напишите указанную команду:

Рассмотрим процесс на примере. 

  • Предположим, что имя нашего файла — a.txt. Тогда используем ls -l a.txt для отображения всех разрешений, которые есть у a.txt:

Поиск текстового файла и вывод его разрешения. Поиск текстового файла и вывод его разрешения.
  • Далее возвращаем или отменяем изменения:

Отображение системы после отмены изменений.Отображение системы после отмены изменений.

Итоги

Команда chmod пригодится для управления правами доступа к файлам и каталогам в любом из дистрибутивов Linux. Она универсальна и помогает как при работе на собственном железе, так и на арендованном VPS/VDS сервере

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

6 февраля 2025

Вам может понравиться