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

    Команда Simple-Server
    03.06.2026
    13 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Работа с командой: основы

    Команда chmod в Linux расшифровывается как «change mode», что в переводе с английского означает «изменить режим». Эта команда предоставляет пользователям возможность тонко настроить систему разрешений для файлов и папок, определяя, какие именно операции, будь то чтение, запись или исполнение, будут доступны для отдельных категорий пользователей. Кроме того, команда chmod обладает функционалом для управления специальными битами, такими как setuid, setgid и sticky bit, что позволяет еще больше детализировать систему безопасности.

    Независимо от того, какой дистрибутив Linux вы предпочитаете использовать, будь то Ubuntu, Debian, CentOS, Fedora, Arch Linux, отечественные Astra Linux, Alt Linux или любой другой из многочисленных вариантов, команда chmod будет следовать универсальным принципам работы, характерным для всех UNIX-подобных систем.

    Синтаксис команды представляет собой следующую структуру:

    • опции — представляют собой вспомогательные параметры, которые позволяют расширять функциональность базовой команды. Они предоставляют пользователю возможность настроить выполнение команды, руководствуясь конкретными требованиями.

    • режим — представляет собой код, который определяет новый набор разрешений для выбранного файла или папки.

    • файл — это конкретное имя файла или папки, к которым будут применены изменения разрешений.

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

    режим — представляет собой код, который определяет новый набор разрешений для выбранного файла или папки.

    файл — это конкретное имя файла или папки, к которым будут применены изменения разрешений.

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

    ОпцияОписание
    -c, --changesЭта опция позволяет выводить сообщение только при фактическом изменении разрешений. Если команда chmod не внесла никаких изменений, она остается в тишине, что полезно для бесшумного осуществления операций.
    -R, --recursiveОбеспечивает рекурсивное применение изменений ко всем файлам и поддиректориям в указанной директории. Это удобно, когда необходимо применить одинаковые разрешения к множеству файлов, сохраняя структуру каталогов.
    -f, --silent, --quietПодавляет вывод уведомлений о возможных проблемах и ошибках, обеспечивая тихую работу команды. Это полезно, если требуется выполнить команду chmod без лишних уведомлений.
    -v, --verboseВключает подробный режим вывода, отображая информацию о любом изменении прав доступа. Это полезно для отслеживания процесса выполнения команды и контроля за изменениями.
    --reference=RFILEПозволяет перенести права из указанного файла (RFILE) на другой файл или папку. Полезно, когда нужно применить аналогичные разрешения, как у другого файла.
    --preserve-rootИзбавляет корневую директорию от случайного изменения прав, добавляя дополнительный уровень предосторожности.
    --helpВыводит справочные сведения, включая список доступных опций и их описания.
    --versionОтображает сведения о версии команды chmod.

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

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

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

    Включает подробный режим вывода, отображая информацию о любом изменении прав доступа. Это полезно для отслеживания процесса выполнения команды и контроля за изменениями.

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

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

    Выводит справочные сведения, включая список доступных опций и их описания.

    Отображает сведения о версии команды chmod.

    Пример применения рекурсивной команды chmod:

    После вызова этой команды все файлы и поддиректории внутри заданной директории (docs) будут обладать указанными правами доступа в Linux. Рекурсивность здесь означает, что эти изменения распространяются на все уровни вложенности.

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

    В рамках команды chmod в Linux, термин «режим» (mode) — фундаментальное понятие, определяющее и регулирующее разрешения к файлам и папкам. Режим включает в себя способы назначения разрешений на запись, чтение и исполнение для трех основных категорий пользователей: владельца файла, группы владельца и прочих пользователей. Режим может быть записан как в виде символов, так и в виде чисел.

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

    При использовании данной нотации, режим описывается при помощи следующих элементов:

    • * `u` (user) — владелец файла.
    * `g` (group) — группа владельца файла. * `o` (others) — остальные пользователи, не являющиеся владельцем и не входящие в группу владельца. * `a` (all) — удобное сокращение для одновременного обозначения всех трех предыдущих категорий; установка прав таким способом применяется к каждой категории пользователей. Таким образом, `a+r` эквивалентно `ugo+r`.
    • u (user) — владелец файла.

    • g (group) — группа владельца файла.

    • o (others) — остальные пользователи, не являющиеся владельцем и не входящие в группу владельца.

    • a (all) — удобное сокращение для одновременного обозначения всех трех предыдущих категорий; установка прав таким способом применяется к каждой категории пользователей. Таким образом, a+r эквивалентно ugo+r.

    u (user) — владелец файла.

    g (group) — группа владельца файла.

    o (others) — остальные пользователи, не являющиеся владельцем и не входящие в группу владельца.

    a (all) — удобное сокращение для одновременного обозначения всех трех предыдущих категорий; установка прав таким способом применяется к каждой категории пользователей. Таким образом, a+r эквивалентно ugo+r.

    • * `+` — используется для добавления определенных битов к уже существующим правам доступа файла, расширяя тем самым возможности пользователей в отношении этого файла.
    * `-` — применяется для удаления определенных битов из текущих прав доступа, ограничивая тем самым возможности пользователей. * `=` — добавляет указанные биты в качестве новых прав доступа к файлу и одновременно удаляет все биты, которые не были явно указаны в команде.
    • + — используется для добавления определенных битов к уже существующим правам доступа файла, расширяя тем самым возможности пользователей в отношении этого файла.

    • - — применяется для удаления определенных битов из текущих прав доступа, ограничивая тем самым возможности пользователей.

    • = — добавляет указанные биты в качестве новых прав доступа к файлу и одновременно удаляет все биты, которые не были явно указаны в команде.

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

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

    = — добавляет указанные биты в качестве новых прав доступа к файлу и одновременно удаляет все биты, которые не были явно указаны в команде.

    1. Права доступа могут быть интерпретированы следующим образом:

    Права доступа могут быть интерпретированы следующим образом:

    • * `r` (read) — обеспечивает возможность чтения содержимого файла, позволяя пользователю просматривать его содержимое.
    * `w` (write) — предоставляет разрешение на запись в файл, что позволяет пользователю вносить изменения в его содержимое. * `x` (execute) — дает разрешение на исполнение файла, пользователь может запускать его в качестве программы или скрипта. * `X` — предоставляет разрешение на выполнение только в том случае, если файл уже имеет атрибут исполняемого файла или если в текущей директории присутствует хотя бы один исполняемый файл. * `s` — устанавливает бит `setuid` (если применяется к файлу) или `setgid` (если применяется к директории). Если у файла установить такой бит, то при его выполнении пользователь, запустивший файл, получает временные привилегии владельца файла. Установка бита для директории не является стандартной практикой и в большинстве случаев не используется. * `t` — устанавливает бит `sticky` для директории (наиболее часто используется для `/tmp`). Служит защитой от удаления или переименования файлов непривилегированными пользователями, которые не являются владельцами.
    • r (read) — обеспечивает возможность чтения содержимого файла, позволяя пользователю просматривать его содержимое.

    • w (write) — предоставляет разрешение на запись в файл, что позволяет пользователю вносить изменения в его содержимое.

    • x (execute) — дает разрешение на исполнение файла, пользователь может запускать его в качестве программы или скрипта.

    • X — предоставляет разрешение на выполнение только в том случае, если файл уже имеет атрибут исполняемого файла или если в текущей директории присутствует хотя бы один исполняемый файл.

    • s — устанавливает бит setuid (если применяется к файлу) или setgid (если применяется к директории). Если у файла установить такой бит, то при его выполнении пользователь, запустивший файл, получает временные привилегии владельца файла. Установка бита для директории не является стандартной практикой и в большинстве случаев не используется.

    • t — устанавливает бит sticky для директории (наиболее часто используется для /tmp). Служит защитой от удаления или переименования файлов непривилегированными пользователями, которые не являются владельцами.

    r (read) — обеспечивает возможность чтения содержимого файла, позволяя пользователю просматривать его содержимое.

    w (write) — предоставляет разрешение на запись в файл, что позволяет пользователю вносить изменения в его содержимое.

    x (execute) — дает разрешение на исполнение файла, пользователь может запускать его в качестве программы или скрипта.

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

    s — устанавливает бит setuid (если применяется к файлу) или setgid (если применяется к директории). Если у файла установить такой бит, то при его выполнении пользователь, запустивший файл, получает временные привилегии владельца файла. Установка бита для директории не является стандартной практикой и в большинстве случаев не используется.

    t — устанавливает бит sticky для директории (наиболее часто используется для /tmp). Служит защитой от удаления или переименования файлов непривилегированными пользователями, которые не являются владельцами.

    Режимы могут комбинироваться для одновременного изменения нескольких прав доступа. Например, комбинация u=rwx,g=x,o=x устанавливает полный набор прав для владельца файла, в то время как группа владельца и прочие пользователи получают исключительно право на исполнение файла.

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

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

    Цифры и их соответствие битам прав доступа:

    • 4 (r) — право чтения.

    • 2 (w) — право записи.

    • 1 (x) — право выполнения.

    1 (x) — право выполнения.

    Комбинируя эти значения, можно представить числа от 0 до 7, где каждая цифра представляет собой сумму соответствующих битов прав доступа. Каждый из этих битов может быть установлен в состояние «включено» (1) или «выключено» (0):**
    **

    ЧислоПраво доступа
    0отсутствие прав (---)
    1разрешено только исполнение (--x)
    2разрешена только запись (-w-)
    3разрешены запись и исполнение (-wx).
    4разрешено только чтение (r--)
    5разрешены чтение исполнение (r-x)
    6разрешены чтение и запись (rw-)
    7полные права (rwx)

    разрешено только исполнение (--x)

    разрешена только запись (-w-)

    разрешены запись и исполнение (-wx).

    разрешено только чтение (r--)

    разрешены чтение исполнение (r-x)

    разрешены чтение и запись (rw-)

    При использовании команды chmod с числовым подходом, вы указываете три значения (XYZ), относящиеся к владельцу, группе владельца и остальным пользователям соответственно.

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

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

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

    Пример применения к файлу:

    Пример применения прав доступа на папку (рекурсивно):

    chmod -R ugo+rX directory

    Пример применения для нескольких файлов:

    chmod 644 file1.txt file2.txt

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

    Прежде чем внести изменения в права доступа в Linux с chmod, полезно ознакомиться с существующими настройками разрешений, которые уже установлены для файлов и папок. Для этого в Linux можно использовать команду ls с опцией -l, которая предоставляет детальный список файлов, включая информацию о правах доступа. Это может быть полезно для выполнения различных операций с файлами и директориями. Пример использования команды:

    Этот пример выведет подобные строки:

    -rw--w---- 1 user user 5678 Feb 15 14:45 document.docx dr-x---r-- 3 user staff 8192 Feb 20 08:30 shared_folder
    • Первая колонка (-rw--w---- или dr-x---r--) представляет собой строку, отражающую разрешения к файлу или директории.

    • Префикс d в начале строки указывает на то, что это директория.

    • Затем следуют три группы по три символа каждая, представляющие разрешения для владельца, группы и остальных пользователей соответственно.

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

    Первая колонка (-rw--w---- или dr-x---r--) представляет собой строку, отражающую разрешения к файлу или директории.

    Префикс d в начале строки указывает на то, что это директория.

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

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

    Однако, при использовании такой команды, вы не увидите информацию о скрытых файлах, которые в Linux начинаются с точки. В таком случае вы можете использовать команду ls с опцией -a, которая выводит список файлов и директорий, включая скрытые:**
    **

    Если вам нужно просмотреть права для конкретного файла или директории, вы также можете использовать команду ls с указанием пути:

    ls -l /path/to/file_or_directory ls -l /home/user/documents

    После выполнения этой команды, вы получите подробный список файлов и директорий в указанной директории, включая информацию о текущих правах доступа.

    Мы уже знаем, что в Linux права доступа могут быть представлены не только в виде символов, но и в виде числовых значений. Для просмотра разрешений в числовом формате мы можем использовать команду stat с опцией --format '%a, за которой следует имя файла или директории. Например, если у нас есть файл secret_document.docx, мы можем использовать следующую команду:

    stat --format '%a' secret_document.docx

    Результат будет числовым значением, которое представляет собой права доступа к файлу secret_document.docx.

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

    Как мы уже знаем, сделать это можно при помощи символьной и буквенной нотаций. Перейдем к примерам команды chmod в Linux.

    Возможность владельца файла читать и записывать в него:

    chmod u+rw confidential_diary.txt

    Отмена права записи для группы:

    chmod g-w shared_project_folder

    Добавление права исполнения для всех остальных пользователей:

    chmod o+x public_script.sh

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

    chmod u=rw shared_notes.txt

    Владелец обладает разрешениями на чтение и исполнение, группа имеет возможность чтения и записи, в то время как остальные пользователи могут только просматривать содержимое:

    chmod 651 multimedia_folder

    Предоставить владельцу полные права, группе — только право чтения, остальным пользователям не предоставлять никаких разрешений:

    chmod 740 confidential_report.doc

    Всем разрешено чтение и исполнение:

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

    chmod 376 important_script.sh

    Назначить бит setuid для владельца файла:

    chmod u+s binary_executable

    Противоположность предыдущей команде, сбросить бит setuid:

    Назначить бит setgid для директории:

    Назначить бит sticky для директории (часто используется для /tmp):

    chmod +t /temporary_space
    1. Рекурсивное применение изменений

    Рекурсивное применение изменений

    Назначить разрешения для всех файлов внутри директории confidential_data и ее поддиректорий:

    chmod -R u=rw,g=r,o=r confidential_data
    1. Применение разрешений, скопированных из другого файла

    Применение разрешений, скопированных из другого файла

    Копировать разрешения из master_permissions.txt ко всем файлам и директориям внутри project_directory:

    chmod --reference=master_permissions.txt -R project_directory

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

    chmod -v a=rX data_file.txt

    Обеспечить тихий режим выполнения и изменить разрешения:

    chmod -f u+rw sensitive_file.txt

    Все эти примеры chmod в Linux демонстрируют различные сценарии использования команды.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490₽

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190₽

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны