Как читать права chmod

Введите восьмеричный режим, например 755, или символьную строку rwxr-xr-x. Второе представление, цифры внизу матрицы и все флажки изменятся сразу. Можно начать и со строки, скопированной из первых десяти знаков ls -l: калькулятор отбросит начальный знак типа объекта.
Девять позиций делятся на 3 группы по 3 знака. Первая тройка относится к владельцу, вторая к группе, третья ко всем остальным. Внутри каждой тройки порядок постоянный: r означает чтение, w запись, x выполнение. Дефис показывает, что соответствующего разрешения нет.
Начальный знак полного вывода ls -l описывает тип объекта, а не право доступа. Поэтому строки -rw-r--r-- и drw-r--r-- имеют одинаковые девять знаков прав, хотя первая указывает на обычный файл, а вторая на каталог. Инструмент принимает и другие типы объектов, например l для символической ссылки, но возвращает только права.
Почему цифры складываются из 4, 2 и 1
Каждому разрешению соответствует один бит и одно числовое значение: чтение r = 4, запись w = 2, выполнение x = 1. Для каждого класса значения складываются независимо. Все три разрешения дают 4 + 2 + 1 = 7, чтение и выполнение дают 4 + 1 = 5, а одно чтение даёт 4.
цифра класса = 4 × r + 2 × w + 1 × x
Здесь r, w и x принимают только 0 или 1. Код 750 читается слева направо: владелец получает 7, то есть все три права; группа получает 5, то есть чтение и выполнение; остальные получают 0 и не имеют ни одного из этих разрешений.
В терминах битовых масок обычные права занимают 9 младших битов. Владелец использует маски 0400, 0200 и 0100, группа 0040, 0020 и 0010, остальные 0004, 0002 и 0001. Именно поэтому запись в восьмеричной системе естественно разбивается на тройки битов. Принцип восьмеричной записи подробнее показывает калькулятор систем счисления.
Права файла и каталога означают разное
Для обычного файла r разрешает читать содержимое, w изменять его, а x запускать файл как программу при наличии подходящего формата. Сам бит выполнения не превращает произвольный текст в рабочую программу и не исправляет строку интерпретатора в скрипте.
Для каталога чтение позволяет получить список имён, запись участвует в создании, переименовании и удалении записей, а выполнение означает проход по каталогу и доступ к объектам по известному имени. На практике запись в каталог обычно полезна вместе с выполнением. Право на удаление файла определяется прежде всего правами родительского каталога, а не битом записи самого файла.
Проверка доступа также зависит от владельца процесса, групп, прав родительских каталогов и дополнительных механизмов системы. ACL, атрибуты файловой системы, режим только для чтения и политики безопасности могут ограничить действие даже тогда, когда девять основных битов выглядят подходящими. Поэтому калькулятор переводит запись, но не обещает, что конкретная операция на сервере будет разрешена.
Как выглядят права в типичных ситуациях
Пример 1. Обычный файл 644. Режим 644 превращается в rw-r--r--. Владелец может читать и менять файл, группа и остальные только читать. Это частый режим для публично читаемого конфигурационного или текстового файла, но пригодность зависит от содержимого.
Пример 2. Каталог или скрипт 755. Код 755 даёт rwxr-xr-x. Владелец имеет все права, группа и остальные могут читать и проходить каталог либо запускать файл. Для закрытого проекта такой доступ может быть шире необходимого.
Пример 3. Закрытый файл 600. Код 600 соответствует rw-------. Только владелец может читать и изменять содержимое. Такой режим часто нужен для файла с секретом или закрытым ключом, если программа не требует других прав.
Пример 4. Личный каталог 700. Режим 700 выглядит как rwx------. Владелец может просматривать каталог, изменять записи и проходить внутрь, а группа и остальные не получают основных прав.
Пример 5. Общий временный каталог 1777. Код 1777 даёт rwxrwxrwt. Все могут создавать записи, но sticky bit ограничивает удаление и переименование чужих объектов внутри каталога. Известный пример такого назначения в Unix-подобных системах связан с каталогом /tmp.
Пример 6. Исполняемый файл 4755. Режим 4755 превращается в rwsr-xr-x. Первая цифра 4 включает setuid, а строчная s одновременно показывает, что у владельца установлен обычный бит x. Такой режим требует особенно осторожной проверки программы.
Пример 7. Setgid без выполнения 2640. Код 2640 отображается как rw-r-S---. Заглавная S сообщает: setgid включён, но выполнение для группы выключено. Это не опечатка и не отдельное основное разрешение.
Что делает четвёртая цифра
Необязательная первая цифра объединяет три особых бита: setuid имеет значение 4 и маску 04000, setgid значение 2 и маску 02000, sticky bit значение 1 и маску 01000. Поэтому 6755 включает сразу setuid и setgid: 4 + 2 = 6.
На исполняемом файле setuid и setgid могут задавать эффективного пользователя или группу запущенного процесса. Их реальное действие зависит от операционной системы, типа файловой системы и способа запуска. На каталоге setgid обычно помогает новым объектам наследовать группу каталога. Sticky bit особенно полезен для общего записываемого каталога, где пользователи не должны свободно удалять чужие записи.
Особый бит занимает ту же печатную позицию, где обычно виден x. Строчные s и t означают, что включены и особый, и обычный бит выполнения. Заглавные S и T означают, что особый бит есть, а соответствующего x нет. Эти правила зафиксированы в руководстве GNU Coreutils и спецификации POSIX.1-2024 для команды chmod.
Границы этого конвертера
Калькулятор переводит полный режим от 000 до 7777. Ввод 0755 нормализуется до 755, потому что особая цифра равна нулю. В языках программирования восьмеричный литерал часто записывают как 0o755, но команда chmod и это поле используют только цифры режима без префикса 0o.
Относительные выражения вроде u+x, g-w и a=r здесь намеренно не вычисляются. Их результат зависит от исходного режима: добавление x к 644 даст не то же самое, что добавление к 600. Для точного преобразования сначала получите полный итоговый режим или выставьте флажки в матрице.
Команда chmod меняет права, но не владельца и не группу: для этого применяется chown. Маска umask участвует в выборе начальных прав при создании объекта, а не является другим способом записать уже готовый режим. Рекурсивный ключ -R применяет изменения ко всему дереву, поэтому его последствия шире одной рассчитанной строки.
Не выбирайте 777 только ради исчезновения ошибки доступа. Этот режим разрешает запись всем трём классам и часто открывает больше возможностей, чем требуется. Сначала определите, кому именно нужен доступ и нужна ли запись. Если требуется отдельно проверить двоичные тройки, пригодятся конвертеры из двоичной системы в восьмеричную и обратно.
Частые вопросы о chmod
Режим стоит проверять с учётом типа объекта: одинаковая буква x запускает обычный файл, но разрешает проход по каталогу. Сам калькулятор только переводит полную запись и не выполняет команду в системе.
Когда выбирать 700, а когда 750?
Режим 700 оставляет чтение, запись и выполнение только владельцу. В 750 группа дополнительно получает чтение и выполнение, но не запись. Для личного скрипта обычно достаточно 700, а 750 подходит, когда запуск действительно нужен доверенной группе.
Чем 600 отличается от 640 для закрытого файла?
В обоих режимах писать может только владелец. При 600 остальные ничего не получают, а при 640 группа может читать файл. Например, секретный ключ обычно закрывают сильнее, а общий конфигурационный файл иногда читается сервисной группой.
Почему доступ может быть запрещён даже при 777?
Классические биты chmod не являются единственным уровнем проверки. Помешать могут права родительских каталогов, ACL, режим файловой системы только для чтения, флаг noexec, изоляция процесса или политика безопасности. Калькулятор показывает только девять бит и особые флаги.
Можно ли удалить файл, если у него нет права записи?
Во многих Unix-подобных системах удаление записи определяется правами на родительский каталог, а не битом w самого файла. Поэтому файл 444 иногда можно удалить, а файл 666 нельзя удалить из каталога без нужных прав.
Что даёт режим 2775 общему каталогу?
Первая цифра 2 включает setgid, а 775 даёт владельцу и группе полный доступ, остальным чтение и проход. В типичной Unix-системе новые объекты такого каталога наследуют его группу, но итоговые права всё равно зависят от umask и ACL.
Можно ли вставить строку из вывода ls -l?
Да. Калькулятор принимает десятисимвольную запись вроде -rw-r-----, drwxr-xr-x или lrwxrwxrwx и игнорирует первый знак типа объекта. Остальные девять позиций должны образовывать полную корректную строку прав.
Как безопаснее применить рассчитанный режим в терминале?
Сначала проверьте путь и тип объекта, затем используйте полную команду, например chmod 640 -- файл. Разделитель -- не даёт имени, начинающемуся с дефиса, превратиться в параметр; рекурсивный -R добавляйте только после проверки дерева.
Работает ли такая запись прав в Windows?
Числовые режимы chmod относятся прежде всего к Unix-подобной модели прав. Windows использует ACL с другими сущностями и правилами наследования; отдельные среды совместимости могут показывать Unix-режим, но этот калькулятор не переводит Windows ACL.
Похожие калькуляторы
Возможно вам пригодятся ещё несколько калькуляторов по данной теме:
- Калькулятор двоично-восьмеричных чисел. Введите двоичное число, и калькулятор переведет его в восьмеричное.
- Калькулятор восьмерично-двоичных чисел. Введите восьмеричное число, и калькулятор переведет его в двоичное.
- Калькулятор систем счисления. Переведите числа между системами счисления (двоичная, восьмеричная, десятичная и т.д.).
- Визуальный редактор HTML. Редактируйте бесплатно и онлайн HTML-код, и сразу же смотрите внешний вид текста и страницы в режиме предпросмотра (WYSIWYG).
- Генератор паролей. Создайте сложный и надёжный пароль бесплатно с помощью онлайн-генератора из 8, 10, 12 или большего числа рандомных (случайных) символов.
- Генератор QR-кода. Вставьте ссылку или текст. Готовый QR-код можно скопировать или скачать как PNG.
- Сумма прописью. Переведите сумму в виде цифр в сумму прописью - текстом. Сделайте расшифровку правильно для договоров и других документов.
- Хрономер: время чтения текста. Оцените, сколько времени займёт чтение или произнесение текста вслух. Просто введите текст в форму, и хронометраж рассчитается автоматически.
- Рандомайзер: генератор случайных чисел. Выберите случайное число в нужном диапазоне для любых целей, в частности для розыгрышей и онлайн-лотерей в соцсетях.
- Случайный выбор из списка. Добавьте варианты по одному в строке, укажите количество и выберите режим повторов.
Есть что добавить?
Напишите своё мнение, комментарий или предложение.