Вы устали менять разрешения на файлы и каталоги вручную? Ищете более быстрый и эффективный способ изменить разрешения на файлы и каталоги? Если да, то вы попали по адресу, потому что в этой статье вы узнаете, как изменить разрешения на файлы и каталоги рекурсивно с помощью команды chmod
!
Читайте дальше, чтобы узнать больше!
Предварительные требования
Для выполнения инструкций вам понадобится устройство с Linux и каталог, файлы и подкаталоги в котором доступны для практики.
Изучение пользователей и групп в Linux
Владельцы и группы имеют важное значение в Linux для безопасного управления файлами и каталогами. Владелец – это тот, кому принадлежит файл или каталог, по умолчанию это создатель. В Linux файлы и каталоги также принадлежат группам. Пользователи и группы устанавливаются с помощью команды chown
.
На скриншоте ниже содержимое, выделенное зеленым цветом, показывает пользователя, которому принадлежит файл или каталог, в этом примере – mihail
. Содержимое, выделенное синим цветом, показывает, к какой группе принадлежит файл или каталог, в этом примере – группа staff
.

Понимание разрешений на файлы и каталоги в Linux
Разрешения устанавливают, какие действия пользователь или группа могут выполнять с данным файлом или каталогом. Они указываются с помощью символьного представления и также назначаются числовое значение.
- Чтение (
r
или4
): Указывает, может ли пользователь или группа читать содержимое файла или каталога. Право на чтение по умолчанию предоставляется всем новым создаваемым файлам и каталогам для всех сторон. - Запись (
w
или2
): Указывает, может ли пользователь или группа редактировать содержимое объекта. Это разрешение по умолчанию предоставляется только владельцу файла или каталога. - Выполнение (
x
или1
): Указывает, может ли пользователь или группа выполнять файл или выполнять команды внутри каталога. Право на выполнение по умолчанию предоставляется только каталогам, но не файлам.
Если вы не предоставите пользователю (
u
) права на выполнение каталога, он не сможет просматривать содержимое, так как пользователь не сможет выполнять команды внутри каталога!
Приведен пример ниже, вывод команды ls -l
демонстрирует различные типы разрешений. Те разрешения, перед которыми стоит значение d
, указывают на каталог.

Почему же кажется, что для каждого объекта есть три набора разрешений? Гранулярное управление разрешениями достигается путем разделения разрешений на перечисленные ниже разделы (в данном учебном пособии они обозначены как стороны).
- Пользователь (
u
): Владелец файла или каталога, выделенный синим цветом. - Группа (
g
): Члены группы, к которой принадлежит файл или каталог, выделенные зеленым цветом. - Другие (
o
): Все дополнительные пользователи и группы, неявно назначенные, выделенные красным цветом.

Изменение прав доступа к файлу с использованием рекурсивной команды chmod
При правильном понимании разрешений Linux читайте далее, чтобы узнать, как изменить права доступа к файлу. Права изменяются с использованием рекурсивной команды chmod
, как показано в приведенных ниже примерах.
1. Сначала проверьте текущие права доступа с помощью команды ls -l
. Здесь показан файл my_dir/index.js.

2. Выполните команду chmod
, указав группу a
(все) и разрешения rwx
или чтение/запись/выполнение. Полная команда следующая: chmod a=rwx index.js
.

3. Как видите, выполнение рекурсивной команды chmod
не возвращает никакого вывода. Чтобы проверить, изменились ли права доступа, выполните команду ls -l
снова.

Установка прав доступа к файлу с использованием числовых значений
Помните числа, связанные с разрешениями, такими как чтение или запись? Вместо указания символьных значений вы можете указать конкретные разрешения с использованием числа. Добавив значения, вы создаете конкретное разрешение, такое как 6
, которое представляет собой комбинацию разрешений на запись (2
) и чтение (4
).
В приведенном ниже примере установите разрешения для файла main.py с помощью команды chmod 664 main.py
. Числовые значения разбиваются следующим образом.
- Пользователь: Чтение и запись (
6
). - Группа: Чтение и запись (
6
). - Другие: Чтение (
4
).

После изменения разрешений проверьте новые разрешения для файла main.py с помощью команды ls -l
.

Удаление и добавление разрешений для файла
До сих пор вы использовали нечисловые команды с параметром присваивания (=
) с рекурсивным chmod
, чтобы установить явные разрешения. Вместо этого вы можете удалить (-
) или добавить (+
) разрешения к существующим наборам разрешений.
1. Сначала перечислите существующие разрешения для файла README.md с помощью команды ls -l README.md
.

2. Затем добавьте (+
) разрешение на выполнение (x
) для пользовательской группы (u
), удалив (-
) разрешение на чтение (r
) для другой группы (o
) для README.md, с помощью следующей команды chmod u+x,o-r README.md
. Разрешения разных групп отделяются запятыми (,
).

3. Запустите команду ls -l README.md
, чтобы убедиться, что разрешения были изменены.

Рекурсивное изменение разрешений файлов и каталогов
Хотя вы делаете прогресс, вы работаете только с одним файлом за раз. Что если у вас есть большое количество файлов, для которых нужно изменить разрешения? Пора повысить свою эффективность и научиться изменять разрешения для нескольких файлов.
Один из вариантов изменения разрешений для нескольких файлов – это запустить chmod
рекурсивно с опцией -R
(рекурсивно, без заглавной буквы). Опция рекурсии изменит разрешения для всех файлов, включая те, которые находятся в подкаталогах, в указанном пути.
1. Рассмотрим следующую команду: chmod -R a=r,u=rwx my_dir
. Большинство опций вы уже видели раньше.
Эта команда изменит разрешения для всех файлов в каталоге my_dir и подкаталогах с использованием опции рекурсии (-R
). Файлы будут доступны для чтения (r
) всем (a
), с различными разрешениями для текущего пользователя (u
), установленными на полные (чтение, запись, выполнение).
На скриншоте ниже вы видите результирующие разрешения после выполнения команды, которая не выводит никакого результата.

2. Предположим, вы выполняете команду chmod -R a=rwx my_dir
в том же каталоге, что и раньше, my_dir. Опять же, вы изменяете все файлы в my_dir и его подкаталогах, чтобы установить всем (a
) полные разрешения (чтение, запись, выполнение). Вот результат выполнения команды, так как рекурсивный chmod
не отображает вывод.

3. Как насчет числового метода? Как показано ниже, рекурсивный метод также работает с числовыми разрешениями, chmod -R 770 my_dir
. Здесь вы предоставляете полные разрешения пользователю и группе, но не предоставляете разрешений другой стороне.

4. Запустите ls -l
, чтобы проверить, установлены ли разрешения для файлов и подкаталогов my_dir числовым методом.

Определение Поведения Файлов и Папок с помощью Специальных Разрешений
Специальные разрешения позволяют использовать несколько дополнительных привилегий, уникальных для стандартных наборов разрешений. Существует три специальных разрешения. Вот как эти специальные разрешения работают и как их можно добавить к файлу или каталогу.
Установка Разрешений SUID (Пользователь + S)
Обычно обозначается как SUID, это специальное разрешение для пользователя. У SUID есть одна функция: файл с SUID всегда выполняется от имени пользователя, который владеет файлом, независимо от того, кто выполняет файл.
Например, рассмотрим index.js. Чтобы дать дополнительное разрешение SUID, выполните chmod u+s index.js
.
Теперь, если вы запустите ls -l index.js
, вы увидите, что у пользователя есть s в его разрешениях вместо x.

Установка Разрешений SGID (Группа + S)
Обычно обозначается как SGID, это специальное разрешение имеет две функции:
- Если установлено для файла, это позволяет выполнять файл от имени группы, которой принадлежит файл, независимо от того, кто выполняет файл.
- Если установлено для каталога, то любые файлы, созданные в каталоге, будут иметь владельца группы, установленного владельцем каталога.
Практика на файле index.php. Чтобы добавить разрешение SGID к этому файлу, выполните следующую команду: chmod g+s index.php
.
Теперь, если вы выполните ls -l index.php
, вы увидите, что у группы есть s в их разрешениях.

Переходите к каталогу: my_dir. Вы можете добавить разрешение SGID к этому каталогу, используя следующую команду: chmod g+s my_dir
. Теперь любые файлы, созданные в этом каталоге, будут иметь владельца группы, установленного владельцем каталога. Вы можете проверить новые разрешения каталога, используя ls -ld my_dir
(параметр d
ограничивает вывод только для каталогов).

Изменение разрешения Sticky Bit
Последнее специальное разрешение также известно как “sticky bit”. Это разрешение не влияет на отдельные файлы. Однако на уровне каталога оно ограничивает удаление файлов. Только владелец файла может удалить файл в этом каталоге.
Добавьте sticky bit к уже знакомому каталогу my_dir. Для этого выполните команду следующим образом: chmod +t my_dir
.
Обратите внимание, что для добавления sticky bit вы не указываете группу other (o) перед
+t
.
Когда вы проверяете новые разрешения my_dir, вы увидите заглавную букву T в разрешениях other, как показано на скриншоте ниже.

Заключение
Поздравляем! Вы охватили много тем по рекурсивному chmod
. Теперь вы готовы решать любые неприятности с разрешениями, которые могут возникнуть с всемогущим инструментом chmod
. Вы даже научились использовать силу рекурсивного (-R
) параметра.
Как вы собираетесь использовать разносторонние возможности команды chmod
в своих интересах, когда в следующий раз вам придется управлять разрешениями файлов или каталогов?