Поиск по сайту:

Как использовать команду chmod в Linux


Описание: Chmod принимает три основных аргумента: r, w и x, которые означают чтение, запись и выполнение соответственно. Добавление или удаление комбинаций аргументов управляет правами доступа к файлам и папкам. Например, chmod +rwx добавляет разрешение на чтение, запись и выполнение скриптов. Запуск chmod -wx удаляет возможность записи и выполнения.

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

chmod изменяет права доступа к файлам

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

Разрешения контролируют действия, которые можно выполнять с файлом или каталогом. Они либо разрешают, либо запрещают чтение, изменение или выполнение файла, если это сценарий или программа. Для каталога разрешения определяют, кто может cd войти в каталог и кто может создавать или изменять файлы в каталоге.

Вы используете команду chmod для установки каждого из этих разрешений. Чтобы увидеть, какие разрешения были установлены для файла или каталога, мы можем использовать ls.

Просмотр и понимание прав доступа к файлам

Мы можем использовать параметр -l (длинный формат), чтобы ls отображал права доступа к файлам и каталогам.

ls -l

В каждой строке первый символ определяет тип отображаемой записи. Если это тире (-), то это файл. Если это буква d, это каталог.

Следующие девять символов представляют собой настройки для трех наборов разрешений.

  • Первые три символа показывают разрешения для пользователя, которому принадлежит файл (разрешения пользователя).
  • Три средних символа показывают разрешения для членов группы файла (разрешения группы).
  • Последние три символа показывают разрешения для всех, кто не относится к первым двум категориям (другие разрешения).

В каждом наборе разрешений есть три символа. Символы являются индикаторами наличия или отсутствия одного из разрешений. Это либо тире (-), либо буква. Если символ представляет собой тире, это означает, что разрешение не предоставлено. Если символ представляет собой r, w или x, это разрешение было предоставлено.

Буквы обозначают:

  • r: права на чтение. Файл можно открыть и просмотреть его содержимое.
  • w: права на запись. Файл можно редактировать, изменять и удалять.
  • x: разрешения на выполнение. Если файл является скриптом или программой, его можно запустить (выполнить).

Например:

  •  --- означает, что разрешения вообще не были предоставлены.
  •  rwx означает, что предоставлены полные разрешения. Все индикаторы чтения, записи и выполнения присутствуют.

На нашем скриншоте первая строка начинается с d. Эта строка относится к каталогу с именем «архив». Владелец каталога — «dave», и имя группы, к которой принадлежит каталог, также называется «dave».

Следующие три символа — права пользователя для этого каталога. Они показывают, что владелец имеет полные права. Присутствуют символы r, w и x. Это означает, что пользователь dave имеет права на чтение, запись и выполнение для этого каталога.

Второй набор из трех символов — это групповые разрешения, это r-x. Они показывают, что члены группы dave имеют права на чтение и выполнение для этого каталога. Это означает, что они могут перечислить файлы и их содержимое в каталоге, а также cd (выполнить) в этот каталог. У них нет прав на запись, поэтому они не могут создавать, редактировать или удалять файлы.

Последний набор из трех символов также r-x. Эти разрешения применяются к людям, на которых не распространяются первые два набора разрешений. Эти люди (называемые «другими») имеют права на чтение и выполнение в этом каталоге.

Итак, резюмируя, члены группы и другие пользователи имеют права на чтение и выполнение. Владелец, пользователь по имени dave, также имеет права на запись.

Для всех остальных файлов (кроме файла сценария mh.sh) dave и члены группы dave имеют права на чтение и запись файлов, а остальные имеют права только на чтение.

Для особого случая файла сценария mh.sh владелец dave и члены группы имеют права на чтение, запись и выполнение, а остальные — только на чтение и выполнение.

Понимание синтаксиса разрешений

Чтобы использовать chmod для установки разрешений, нам нужно сообщить ему:

  • Кто: для кого мы устанавливаем разрешения.
  • Что. Какие изменения мы вносим? Мы добавляем или удаляем разрешение?
  • Какие: какие разрешения мы устанавливаем?

Мы используем индикаторы для представления этих значений и формируем короткие «операторы разрешений», такие как u+x, где «u» означает «пользователь» (кто), «+» означает добавить (что) и «x» означает разрешение на выполнение (какое).

Мы можем использовать следующие значения «кто»:

  • u: пользователь, то есть владелец файла.
  • g: группа, то есть члены группы, к которой принадлежит файл.
  • o: другие, то есть люди, на которых не распространяются разрешения u и g.
  • a: все, что означает все вышеперечисленное.

Если ни один из них не используется, chmod ведет себя так, как если бы был использован «a».

Мы можем использовать следующие значения «что»:

  • : знак минус. Удаляет разрешение.
  • +: знак плюс. Дает разрешение. Разрешение добавляется к существующим разрешениям. Если вы хотите иметь это разрешение и только этот набор разрешений, используйте параметр =, описанный ниже.
  • =: знак равенства. Установите разрешение и удалите других.

Мы можем использовать следующие значения:

  • r: разрешение на чтение.
  • w: разрешение на запись.
  • x: разрешение на выполнение.

Установка и изменение разрешений

Допустим, у нас есть файл, к которому у всех есть полные права.

ls -l new_ file.txt

Мы хотим, чтобы пользователь dave имел права на чтение и запись, а группа и другие пользователи — только на чтение. Мы можем сделать это с помощью следующей команды:

chmod u=rw,og=r new_file.txt

Использование оператора «=» означает, что мы стираем все существующие разрешения, а затем устанавливаем указанные.

давайте проверим новое разрешение на этот файл:

ls -l new_file.txt

Существующие разрешения были удалены, а новые разрешения установлены, как мы и ожидали.

Как насчет добавления разрешения без удаления существующих настроек разрешений? Мы можем сделать это легко тоже.

Допустим, у нас есть файл сценария, который мы закончили редактировать. Нам нужно сделать его исполняемым для всех пользователей. Его текущие разрешения выглядят так:

ls -l new_script.sh

Мы можем добавить разрешение на выполнение для всех с помощью следующей команды:

chmod a+x new_script.sh

Если мы посмотрим на разрешения, мы увидим, что разрешение на выполнение теперь предоставляется всем, а существующие разрешения все еще действуют.

ls -l new_script.sh

Мы могли бы добиться того же результата и без «а» в выражении «а+х». Следующая команда сработала бы так же хорошо.

chmod +x new_script.sh

Установка разрешений для нескольких файлов

Мы можем применять разрешения сразу к нескольким файлам.

Это файлы в текущем каталоге:

ls -l

Допустим, мы хотим удалить разрешения на чтение для «других» пользователей из файлов с расширением «.page». Мы можем сделать это с помощью следующей команды:

chmod o-r *.page

Давайте проверим, какой эффект это имело:

ls -l

Как видим, у файлов «.page» у «другой» категории пользователей убрано право на чтение. Никакие другие файлы не были затронуты.

Если бы мы хотели включить файлы в подкаталоги, мы могли бы использовать параметр -R (рекурсивный).

chmod -R o-r *.page

Числовая стенография

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

Цифры, которые вы можете использовать, и то, что они представляют, перечислены здесь:

  • 0: (000) Нет разрешения.
  • 1: (001) Разрешение на выполнение.
  • 2: (010) Разрешение на запись.
  • 3: (011) Разрешения на запись и выполнение.
  • 4: (100) разрешение на чтение.
  • 5: (101) Разрешения на чтение и выполнение.
  • 6: (110) Разрешения на чтение и запись.
  • 7: (111) Разрешения на чтение, запись и выполнение.

Каждое из трех разрешений представлено одним из битов двоичного эквивалента десятичного числа. Таким образом, 5, что в двоичном формате равно 101, означает чтение и выполнение. 2, что равно 010 в двоичном формате, будет означать разрешение на запись.

Используя этот метод, вы устанавливаете разрешения, которые хотите иметь; вы не добавляете эти разрешения к существующим разрешениям. Таким образом, если бы права на чтение и запись уже были установлены, вам пришлось бы использовать 7 (111) для добавления разрешений на выполнение. Использование 1 (001) удалит разрешения на чтение и запись и добавит разрешение на выполнение.

Давайте добавим разрешение на чтение обратно в файлы «.page» для других категорий пользователей. Мы также должны установить права пользователя и группы, поэтому нам нужно установить их такими, какие они уже есть. У этих пользователей уже есть права на чтение и запись, то есть 6 (110). Мы хотим, чтобы у «других» были права на чтение и права, поэтому их нужно установить на 4 (100).

Следующая команда выполнит это:

chmod 664 *.page

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

ls -l

Расширенные настройки

Если вы прочитаете справочную страницу для chmod, вы увидите, что есть некоторые дополнительные параметры, связанные с битами SETUID и SETGID, а также с ограниченным удалением или битом «липкости».

В 99 % случаев вам понадобится chmod, описанные здесь варианты вам помогут.

RELATED: Best Linux Laptops for Developers and Enthusiasts