yandex

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

Дарим до 20 000 бонусов
для юрлиц и ИП
Подробнее
Avatar icon

Марина Суворова

Главный редактор блога

Статья

Время чтения

5 минут

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

chmod [опции] режим имя_файла

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

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

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

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

Опции

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

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

Режим

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

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

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

ls -l

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

-rw-r--r-- 1 root root 46 Apr 14 16:37 example.txt
drwxr-xr-x 2 root root 4096 Apr 18 12:52 prac

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

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

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

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

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

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

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

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

# file: file1.txt
# owner: administrator
# group: group1
user::rw-
group::r--
other::r–

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

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

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

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

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

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

chmod [ugoa] [+-=] [rwx] файл(ы)

В этом вводе: 

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

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

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

img

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

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

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

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

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

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

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

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

chmod 674 [имя_файла]

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

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

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

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

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

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

Например:

chmod -R 755 каталог

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

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

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

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

chmod --reference=референсный_файл_целевой_файл

Здесь:

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

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

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

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

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

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

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

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

chmod 644 [имя_файла_или_каталога]

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

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

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

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

Итоги

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

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

Содержание

  • Зачем нужна команда chmod
  • Синтаксис chmod и дополнительные параметры команды
  • Как узнать доступные разрешения
  • Как изменять разрешения
  • Как используется ключ --reference
  • Как отменить изменения, внесенные командой chmod
  • Итоги

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