Команды Linux · 4 min read · Sep 14, 2025

Учебник по команде Linux chmod для начинающих

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

Обратите внимание, что все примеры и инструкции, упомянутые в этом учебнике, были протестированы на 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]

В приведенной выше команде 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 никогда не изменяет права символьных ссылок; системный вызов chmod не может изменить их права. Это не проблема, так как права символьных ссылок никогда не используются. Однако для каждой символьной ссылки, указанной в командной строке, chmod изменяет права файла, на который она указывает. В отличие от этого, chmod игнорирует символьные ссылки, встреченные во время рекурсивных обходов директорий.

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

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

  • -R, –recursive: Эта опция применяет изменения прав рекурсивно ко всем файлам и директориям в указанной директории. Это полезно, когда вы хотите изменить права директории и всех ее содержимого за один раз.

Пример: chmod -R 755 /path/to/directory

  • -c, –changes: Эта опция сообщает только тогда, когда изменение было сделано. Если права были успешно изменены, выводится сообщение, указывающее на изменение.

Пример: chmod -c 644 filename

  • -v, –verbose: Эта опция предоставляет подробную информацию о каждом обрабатываемом файле, были ли права изменены или нет.

Пример: chmod -v 755 filename

  • -reference=RFILE: Вместо того, чтобы указывать права напрямую, эта опция позволяет установить права файла или директории в соответствии с другим файлом или директорией (RFILE).

Пример: chmod –reference=file1 file2

  • -f, –silent, –quiet: Эта опция подавляет большинство сообщений об ошибках, позволяя команде выполняться без отображения вывода для ошибок.

Пример: chmod -f 755 filename

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

Заключение

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

Обратите внимание, что наше обсуждение в основном сосредоточено на файлах. Вам следует помнить некоторые детали при использовании chmod с директориями. Для всей этой информации (а также для получения дополнительных сведений о chmod) перейдите на страницу справки инструмента.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.