Инструменты разработчика · Калькулятор Chmod
Что не может выразить chmod: возможности, неизменяемые файлы и MAC
· Фон
chmod Юникс контроль доступа
Биты режима — это один из нескольких уровней, которые решают, будет ли операция успешной. В этом посте рассказывается об остальных (возможностях файлов, флагах чата, SELinux и AppArmor) и о том, как распознать отказ каждого из них.
Root не может записать файл 644 — режим говорит да, chmod ничего не меняет, а ошибка сохраняется
Режим может разрешить операцию, в то время как операция по-прежнему завершается неудачей. Калькулятор декодирует 644 как rw-r--r--, что означает, что владелец может читать и изменять обычный файл, в то время как группа и другие могут его читать. Это решает только поставляемые традиционные биты. Это не доказывает ни владения процессом, ни идентификации пути, ни отсутствия другого уровня обеспечения соблюдения.
В источниках упоминаются несколько немоделированных элементов управления: возможности, неизменяемые атрибуты, политика обязательного доступа, флаги монтирования, пространства имен, фильтры системных вызовов, списки ACL и владение. Повторный вход в режим или создание другой команды chmod ничего о них не сообщает. Сначала проверьте восьмеричное, символическое и матричное согласование; если ошибка повторяется, соберите доказательства из окружающей среды вместо того, чтобы расширять догадки chmod.
Операция, совместимая с режимом, по-прежнему может завершиться неудачей для слоев, которые этот инструмент не видит.
Калькулятор моделирует отсутствие порядка среди внешних элементов управления. Вся его модель данных представляет собой целое число от восьмеричного 0000 до 7777, расширенное до владельца, группы, других, setuid, setgid и липких логических значений. В пояснениях используется это значение и целевой тип. Никакой путь решения ядра, последовательность модулей безопасности или результат системного вызова не учитываются в расчете.
Это ограничение делает страницу контролируемым первым шагом. Подтвердите режим, отличите обход от выполнения и обратите внимание на специальные битовые буквы. Статья 501 добавляет выполнение владения и родительского каталога в качестве близлежащих проверок. Помимо этого, эти источники не предоставляют диагностического ранжирования среди списков ACL, обязательной политики, монтирования, атрибутов, пространств имен, возможностей или фильтров. Совместимый режим только сужает вопрос.
Калькулятор не моделирует порядок между внешними уровнями принудительного исполнения.
Возможности файлов выходят за рамки имеющихся доказательств. Реализация не содержит имен возможностей, анализатора данных, команды проверки или учета их взаимодействия с setuid. Он может кодировать setuid как 4000 и объяснять исполняемый обычный файл. Это не должно стать сравнением с более детальными системами привилегий, которые этот репозиторий не моделирует и не документирует.
То, что доказывает страница, является конкретным. Режим 4755 становится rwsr-xr-x, к его сводным именам setuid, а к присваиваниям добавляются u+s. В режиме 4644 используется буква S в верхнем регистре, поскольку выполнение владельцем отсутствует, что приводит к тому, что комбинация, называемая почти всегда ошибочной. Тесты устанавливают эти факты; внешние инструменты должны определять, существуют ли возможности, разрешать доступ или предлагать лучший дизайн.
Возможности файла находятся за пределами исходного набора
Неизменяемые атрибуты и атрибуты, доступные только для добавления, также отсутствуют в модели. Калькулятор не читает атрибуты файловой системы и не распознает команды для их изменения. Его матрица содержит rwx для владельца, группы и других, а также три специальных бита. Таким образом, видимый бит записи не может гарантировать успешную запись, и повторное его переключение не может диагностировать атрибут, который страница никогда не наблюдала.
Сохраняйте различие в силе. Если 644 отображается правильно, запись владельца существует в традиционном режиме; это свидетельство представления, а не завершенная запись. Страница не открывает безопасный путь отображения в кавычках и не запускает сгенерированную команду. Когда реальный сбой сопровождается достаточным количеством битов, проверяйте реальный объект и систему, а не приписывайте ненаблюдаемое состояние.
Неизменяемые атрибуты и атрибуты, доступные только для добавления, находятся за пределами исходного набора.
Здесь не анализируются обязательные контексты, профили и журналы управления доступом. Источники упоминают SELinux и AppArmor лишь как примеры решений, которые калькулятор не может наблюдать. Они не предоставляют синтаксиса контекста, семантики политики, формата журнала или диагностических команд. Таким образом, сам по себе режим не может приписать отрицание какой-либо системе; доказательства должны поступать из правоохранительной среды.
Селектор файла или каталога усиливает эту границу. Он изменяет такие команды, как запуск, список, создание, удаление, ввод и достижение, но не изменяет целое число и не считывает метку политики. Программа 755 и каталог совместно используют rwxr-xr-x, описывая различные обычные действия. Ни одно из объяснений не предсказывает результаты обязательной политики, поэтому сохраните проверенный режим и просмотрите журналы платформы.
Обязательные контексты и журналы управления доступом находятся за пределами исходного набора.
Поставляемый режим не может раскрыть параметры монтирования. Калькулятор принимает восьмеричный или символьный текст, а также необязательный путь, используемый только для отображения команд. Он никогда не открывает этот путь, не идентифицирует его монтирование и не читает конфигурацию. В источниках поведение «только для чтения», «без выполнения» и «без setuid» указывается как внешние проблемы, но не приводится подробной информации о платформе для диагностики этих политик.
Сгенерированный текст может включать восьмеричный формат, путь в кавычках и отображаемый флаг -R, однако ничто не доказывает, что файловая система удовлетворит запрос. Даже значение специального бита, которое идеально передается туда и обратно, может быть неэффективным в соответствии с невидимыми правилами. Рассматривайте команду как артефакт проверки, а затем проверяйте целевую файловую систему, прежде чем требовать изменения разрешений или выполнения.
Параметры монтирования не обнаруживаются в предоставленном режиме
Пространства имен и фильтры системных вызовов нигде не фигурируют в модели режимов. Входные данные не содержат идентификатора процесса, контекста контейнера, списка системных вызовов или конфигурации среды выполнения. Страница не может знать, видит ли процесс тот же путь, достигает ли ожидаемый объект или отфильтрован ли вызов. Эти вопросы фундаментально отличаются от добавления 4, 2 и 1 в тройки разрешений.
Не делайте вывод о механизмах выполнения на основании успешного преобразования. Проверка охватывает неправильно сформированные восьмеричные цифры, символическую длину и неуместные буквы. Допустимый результат означает только то, что текст отображается в представимый режим; он не проверяет среду выполнения. Поскольку сгенерированный текст оболочки является инертным, для анализа пространства имен и фильтров по-прежнему требуются доказательства времени выполнения, отсутствующие в этих источниках.
Пространства имен и фильтры системных вызовов не представлены.
Начните с режима, потому что он компактен и его легко включать и выключать. Переведите значение, проверьте каждый класс, отличите файл от каталога и выставьте любой префикс специального бита. Согласование между восьмеричными, символическими, матричными, сводными и поясняющими значениями делает традиционный вопрос правильно сформулированным. Это может выявить недостающий или чрезмерный бит, а не исключительный авторитет.
Продолжайте только с доказательствами из реальной системы. Владение, списки управления доступом, атрибуты, обязательная политика, монтирование, возможности, пространства имен, фильтры и правила приложений здесь не описаны. Предварительный просмотр не читает и не изменяет файл. Дисциплинированный вывод узок: урегулируйте арифметику в режиме поставки локально, затем исследуйте внешнее применение вместо того, чтобы циклически перебирать более широкие значения chmod, не зная об отказе.