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

Управляйте доступом к файлам, каталогам поиска и запуском сценариев с помощью команды 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. Эти разрешения применяются к людям, на которых не распространяются первые два набора разрешений. Эти люди (называемые «другими») имеют разрешения на чтение и выполнение в этом каталоге.

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

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

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

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

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

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

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

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

  • u : Пользователь, то есть владелец файла.
  • g : Группа, то есть члены группы, к которой принадлежит файл.
  • O : Другие, что означает людей , которые не регулируются uи gразрешений.
  • а : Все, имея в виду все вышеперечисленное.

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

Какие значения мы можем использовать:

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

«Какие» значения мы можем использовать:

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

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

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

ls -l новый_файл.txt

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

chmod u = rw, og = r новый_файл.txt

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

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

ls -l новый_файл.txt

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

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

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

ls -l новый_скрипт.sh

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

chmod a + x new_script.sh

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

ls -l новый_скрипт.sh

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

chmod + x new_script.sh

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

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

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

ls -l

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

chmod или * .page

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

ls -l

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

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

chmod -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 *. страница

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

ls -l

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

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

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