Самоучитель по команде chmod в Linux для начинающих

chmod Команда используется для изменения прав доступа к файлам и каталогам в операционной системе на базе Linux. Она позволяет пользователям определять, кто может читать, писать или исполнять файл, изменяя параметры разрешений. Разрешения обычно назначаются трем категориям: владельцу файла, группе, к которой принадлежит файл, и другим (всем остальным). Команду chmod можно использовать с символическими обозначениями (например, chmod u+x имя файла чтобы добавить разрешение на выполнение для пользователя) или числовые обозначения (например, chmod 755 имя файла для установки определенных разрешений на чтение, запись и выполнение для каждой категории). Эта команда необходима для управления контролем доступа в системе, гарантируя, что файлы и каталоги имеют соответствующие настройки безопасности.

Обратите внимание, что все примеры и инструкции, приведенные в этом руководстве, были протестированы на Ubuntu 24.04, и chmod Версия, которую мы использовали, – 8.25.

Основы Chmod

Рассмотрим следующий пример команды ls:

Нас интересует первый столбец в выводе. Оставим в стороне начальное ‘-‘ (обозначающее тип файла). Оставшиеся поля в столбце можно разделить следующим образом: rw- , rw- , и r–. Это разрешения, которые имеет владелец файла, группа, к которой принадлежит файл, и другие лица, имеющие отношение к этому файлу.

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

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

chmod +x script.sh

Теперь вот разрешения:

Дополнительное ‘x’ в разрешениях для владельца, группы и других означает, что все теперь имеют доступ к выполнению этого файла.

Однако, скорее всего, вы не захотите, чтобы все имели доступ к выполнению файла. Что, если требуется предоставить доступ на выполнение script.sh только владельцу/текущему пользователю?

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

chmod -x script.sh

А затем предоставить его владельцу в явном виде:

chmod u+x script.sh

Как вы уже догадались, ‘u+x’ означает предоставление (+) владельцу/текущему пользователю (u) исполняющего (x) доступа к файлу. Аналогично, для группы вы можете использовать ‘g’, а для остальных – ‘o’.

Обратите внимание, что когда вы хотите предоставить/отменить общий набор разрешений для всех, вы можете использовать ‘a’ вместо ‘ugo’. Я имею в виду следующее:

chmod ugo-x script.sh

можно заменить на это:

chmod a-x script.sh

Также помните, что если ни одно из этих значений (‘u’, ‘g’, ‘o’ и ‘a’) не указано явно, то по умолчанию также принимается ‘a’.

Далее, при желании можно просто скопировать разрешения, предоставленные, скажем, владельцу/текущему пользователю, и установить их для группы или других пользователей. Для этого используйте знак ‘=’.

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

chmod g=u script.sh

Другим сценарием может быть копирование разрешений для определенного файла и их копирование для вашего файла. Для этого используйте команду –reference опция командной строки. Вот общий шаблон для использования этого параметра командной строки:

chmod --reference=[source-file] [destination file]

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

Если двигаться дальше, то существует также числовая нотация (также известная как восьмеричное представление), с помощью которой вы можете указать chmod на изменение разрешений. В этом режиме есть три числа, с которыми можно играть: 4, 2 и 1. Если 4 означает чтение, то два других – запись и выполнение, соответственно.

Например, рассмотрим следующий пример:

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

chmod 750 script.sh

В приведенной выше команде ‘7’ обозначает пользователя, что является результатом 4+2+1, так как пользователь должен иметь все разрешения. Аналогично, ‘5’ – для группы, что является результатом 4+0+1, так как требуется предоставить группе только права на чтение и выполнение. И наконец, “0” – для других, что является результатом 0+0+0, так как требуется отозвать все разрешения у других.

Для тех, кто имеет дело с символическими ссылками, стоит знать следующее:

chmod never changes the permissions of symbolic links; the chmod system call cannot change their permissions.  This is not a problem since  the
permissions  of  symbolic links are never used.  However, for each symbolic link listed on the command line, chmod changes the permissions of
the pointed-to file.  In contrast, chmod ignores symbolic links encountered during recursive directory traversals.

Справочник командной строки

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

  • -R, –recursive: Эта опция рекурсивно применяет изменения разрешений ко всем файлам и каталогам в указанном каталоге. Это полезно, когда вы хотите изменить разрешения каталога и всего его содержимого за один раз.Пример: chmod -R 755 /path/to/directory
  • -c, –changes: Эта опция выводит отчет только при изменении. Если разрешения успешно изменены, выводится сообщение об изменении.Пример: chmod -c 644 имя файла
  • -v, –verbose: Эта опция предоставляет подробную информацию о каждом обрабатываемом файле, независимо от того, были ли изменены права доступа или нет.Пример: chmod -v 755 имя файла
  • -reference=RFILE: Вместо того чтобы указывать разрешения напрямую, эта опция позволяет установить разрешения файла или каталога в соответствии с другим файлом или каталогом (RFILE).Пример: chmod –reference=file1 file2
  • -f, –silent, –quiet: Эта опция подавляет большинство сообщений об ошибках, заставляя команду выполняться без вывода информации об ошибках.Пример: chmod -f 755 имя файла

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

Заключение

Здесь, в этом руководстве, мы обсудили большинство основ, связанных с этим инструментом, а рассмотренные примеры направлены на то, чтобы сделать эти основы понятными.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *