yandex
Калькулятор ценТарифыАкцииДокументацияО насКарьера в Cloud.ruНовостиЮридические документыКонтактыРешенияРеферальная программаКейсыПартнерство с Cloud.ruБезопасностьEvolutionAdvancedEvolution StackОблако VMwareML SpaceВ чем отличия платформ?БлогОбучение и сертификацияМероприятияИсследования Cloud.ruЛичный кабинетВойтиЗарегистрироватьсяEvolution ComputeEvolution Managed KubernetesEvolution Object StorageEvolution Managed PostgreSQL®Облако для мобильных и веб‑приложенийАналитика данных в облакеEvolution Bare MetalEvolution SSH KeysEvolution ImageСайт в облакеEvolution DNSEvolution VPCEvolution Load BalancerEvolution Magic RouterEvolution DiskХранение данных в облакеEvolution Container AppsEvolution Artifact RegistryEvolution Managed ArenadataDBEvolution Managed TrinoEvolution Managed SparkАналитика данных в облакеEvolution ML InferenceEvolution Distributed TrainEvolution ML FinetuningEvolution NotebooksCurator Anti-DDoSCurator Anti‑DDoS+WAFUserGate: виртуальный NGFWStormWall: Anti-DDoSEvolution TagsEvolution Task HistoryCloud MonitoringCloud LoggingАренда GPUAdvanced Object Storage ServiceAdvanced Elastic Cloud ServerAdvanced Relational Database Service for PostgreSQLРазработка и тестирование в облакеAdvanced Image Management ServiceAdvanced Auto ScalingDirect ConnectCDNCross-platform connectionAdvanced Enterprise RouterAdvanced Cloud Backup and RecoveryAdvanced Data Warehouse ServiceAdvanced Elastic Volume ServiceAdvanced Cloud Container EngineAdvanced FunctionGraphAdvanced Container Guard ServiceAdvanced Software Repository for ContainerAdvanced Document Database Service with MongoDBAdvanced Relational Database Service for MySQLAdvanced Relational Database Service for SQL ServerCloud AdvisorAdvanced Server Migration ServiceAdvanced Data Replication ServiceAdvanced API GatewayAdvanced CodeArtsAdvanced Distributed Message Service for KafkaAdvanced Distributed Message Service for RabbitMQAdvanced DataArts InsightAdvanced CloudTableAdvanced MapReduce ServiceAdvanced Cloud Trace ServiceAdvanced Application Performance ManagementAdvanced Identity and Access ManagementAdvanced Enterprise Project Management ServiceVMware: виртуальный ЦОД с GPUVMware: виртуальный ЦОДУдаленные рабочие столы (VDI)VMware: сервер Bare MetalИнфраструктура для 1С в облакеУдаленные рабочие столыМиграция IT‑инфраструктуры в облако3D-моделирование и рендерингVMware: резервное копирование виртуальных машинVMware: резервный ЦОДVMware: резервное копирование в облакоVMware: миграция виртуальных машин
Поиск
Связаться с нами

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

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

Инструкции
Иллюстрация для статьи на тему «Что может chmod: как управлять доступами к файлам и папкам в Linux»
Продукты из этой статьи:
Иконка-Evolution Image
Evolution Image
Иконка-Evolution Managed Kubernetes
Evolution Managed Kubernetes
Иконка-Evolution Compute
Evolution Compute

Зачем нужна команда 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, можно использовать не только основной синтаксис команды, но и дополнительные возможности в виде символьных и числовых нотаций. Это позволяет гибко настраивать ролевую модель системы и всегда иметь уверенность в том, что ценные данные надежно защищены. 

Продукты из этой статьи:
Иконка-Evolution Image
Evolution Image
Иконка-Evolution Managed Kubernetes
Evolution Managed Kubernetes
Иконка-Evolution Compute
Evolution Compute
6 февраля 2025

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