Русский

Инструменты разработчика · Калькулятор Chmod

Как прочитать разрешения ls -l и преобразовать их в восьмеричный режим

· Как это работает

chmod Юникс рабочий процесс разработчика

Строки режима в стиле ls, показанные в виде отдельной диаграммы битов разрешений Unix
Оригинальная векторная иллюстрация ToolAcre

Строка из десяти символов в начале ls -l представляет собой тип файла плюс девять битов разрешения. В этом посте показано, как его декодировать и создать восьмеричный режим, который требуется chmod, включая буквы со специальными битами.

Билет с вставленным -rw-r-----+ — вам нужно знать, следует ли сказать пользователю запустить chmod 640 или что-то еще

Вставленная строка, такая как -rw-r-----+, содержит больше, чем принимает этот синтаксический анализатор. Распознаваемое ядро ​​представляет собой тело разрешения из девяти символов, которому может предшествовать один поддерживаемый символ типа файла. Завершающий плюс делает ввод слишком длинным и отклоняется. При удалении этого внешнего маркера остается -rw-r-----, который преобразуется в 640: чтение группы владельцем read/write, и никаких разрешений для других.

Это преобразование не декодирует то, что представляет собой плюс, за исключением предупреждения статьи 501 о том, что длинный список может использовать его для списков ACL. Калькулятор не имеет записей или маски ACL. Он также не проверяет машину, владельца, группу или путь билета. Таким образом, режим 640 — это базовое значение разрешения, представленное принятым ядром, а не полный ответ об эффективном доступе.

Первый символ — это тип — тире, d, l, c, b, p и s, и почему он не является частью режима.

Необязательный первый символ рассматривается как маркер типа, а не как бит разрешения. Анализатор распознает -, d, l, b, c, p, s, D и ?. Когда один появляется перед девятью действительными позициями разрешений, он удаляется для арифметики. Полученные в результате владелец, группа и другие тройки сами по себе определяют восьмеричное значение и выбор матрицы.

Такое поведение легко проверить с помощью эквивалентных входных данных. И rwxr-x---, и -rwxr-x--- создают 750, поскольку ведущее тире не вносит никакого бита режима. Маркер каталога может предшествовать одному и тому же телу и по-прежнему давать одно и то же целое число. Целевой селектор управляет пояснительными формулировками отдельно, поэтому принятие символа типа не означает, что браузер обнаружил или открыл этот объект.

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

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

Каждая принятая тройка отображается в одну восьмеричную цифру с помощью весов, указанных в статье 501: чтение — 4, запись — 2, выполнение — 1. Матрица показывает те же флаги, что и флажки, и перестраивает целое число при его изменении. Специальные буквы принимаются только в позициях выполнения, сохраняя setuid, setgid или липкие вместе с основным состоянием выполнения.

Рабочий пример: от -rwxr-x--- до 750 — присвоение 4, 2, 1 каждой букве и суммирование по группе

Преобразуйте -rwxr-x---, игнорируя ведущий маркер типа и разделив тело на rwx, rx и ---. Владелец имеет 4+2+1, создавая 7. Группа имеет 4+1, производя 5. У другого нет разрешенного бита, что дает 0. Калькулятор возвращает 750 и выбирает соответствующие девять обычных полей разрешений.

Обратная проверка должна выполняться в том же текстовом теле. Введите 750, и символическое поле станет rwxr-x---; выберите маркер обычного файла для отображаемой формы, и он станет -rwxr-x---. Предварительный просмотр назначения имеет другой синтаксис: u=rwx,g=rx,o=. Все три точки зрения описывают один фиксированный режим, в то время как право собственности и разумность его применения остаются нерешенными.

Завершающие знаки плюса и at — + означает, что записи ACL существуют, @ означает расширенные атрибуты в macOS, и ни один из них не является частью режима.

Завершающие знаки плюса и at являются маркерами метаданных в структуре, но реализованный факт уже: этот синтаксический анализатор отклоняет любой из них, поскольку принятый ввод заканчивается после тела разрешения. Статья 501 конкретно определяет конечный плюс в списках ACL. CHMOD_SOURCES не предоставляет эквивалентной интерпретации знака at, поэтому в этом разделе ему не присваивается значение операционной системы, не поддерживаемое репозиторием.

Не удаляйте маркеры вслепую, когда важен эффективный доступ. Вместо этого отделите принятое ядро ​​из девяти или десяти символов для преобразования в базовый режим и исследуйте любой остаток, используя доказательства из исходной системы. Калькулятор может показать, что rw-r----- означает 640. Он не может объяснить дополнительные метаданные, прочитать расширенные атрибуты или определить, меняет ли другой механизм контроля доступа то, что может делать пользователь или процесс.

Завершающие знаки плюс и at являются маркерами метаданных, которые этот синтаксический анализатор отклоняет.

Внешние команды статистики не запускаются калькулятором браузера. На странице нет запуска команд или доступа к файловой системе; его поле пути существует только для создания текста chmod в кавычках для отображения. Следовательно, он не может получить текущий режим, сравнить выходные данные команды для конкретной платформы или подтвердить, что вставленная строка получена из определенной утилиты. Пользователь должен указать значение для конвертации.

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

Внешние команды статистики не запускаются калькулятором браузера

Декодирование ACL остается за пределами маршрута. Его модель содержит бит владельца, группы, других и три специальных бита, без именованных записей или маски ACL. Декодирование разрешений Windows также отсутствует: нет модели идентификации Windows, синтаксиса записи контроля доступа или обнаружения платформы. Девятипозиционное ядро ​​в стиле Unix можно преобразовать, но на основе этого результата невозможно восстановить ни одну дополнительную систему разрешений.

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

ACL и декодирование разрешений Windows остаются за пределами маршрута

Чтение режима в стиле ls становится механическим, как только принятое ядро ​​изолировано. Отбросьте один распознаваемый символ начального типа, разделите оставшиеся девять позиций на владельца, группу и другие и в сумме прочитайте 4, напишите 2 и выполните 1 внутри каждой тройки. Калькулятор выполняет это преобразование и проверяет буквы, специфичные для позиции, включая реализованные формы s, S, t и T.

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