Инструменты разработчика · Калькулятор Chmod
POSIX ACL против битов режима chmod: когда rwx недостаточно
· Фон
chmod Юникс контроль доступа
Биты режима охватывают одного владельца, одну группу и всех остальных. В этом посте объясняется модель POSIX.1e ACL, которая заполняет пробел, как она взаимодействует с chmod и когда общая группа по-прежнему является более простым ответом.
На одного читателя больше, чем позволяет модель — файл принадлежит группе приложений, и его должен прочитать один аудитор вне группы.
Модель обычного режима не имеет четвертого идентификационного слота. Он может описывать разрешения для одного владельца, одной группы и всех остальных, но не может указать дополнительного аудитора. Калькулятор точно отражает эту границу: его матрица, символическое отображение и сводные данные отображают эти три класса плюс специальные биты, а не записи доступа для каждого пользователя или группы.
Расширение другого класса просто для размещения одного дополнительного читателя повлияет на каждую личность, попадающую в этот класс. Калькулятор может показать это арифметическое изменение, например переход от 0640 к 0644, но он не может решить, приемлем ли более широкий доступ. Именованный доступ требует доказательств и инструментов вне этого маршрута.
Ограничение в три класса — почему в традиционной модели ровно по одному слоту для владельца, группы и остальных
Каждая конечная восьмеричная цифра принадлежит одному фиксированному классу. Владелец, группа и другие получают флаги чтения, записи и выполнения, создавая девять обычных позиций. Модель не может вставить еще одну тройку для указанного человека. Таким образом, успешное преобразование точно описывает базовый режим, ничего не говоря о дополнительных записях, прикрепленных где-либо еще.
Это ограничение имеет значение при чтении явно ограничительного вывода. Символическое значение rw-r----- сообщает вам базового владельца, группу и другие биты, представленные 0640. Это не доказывает, что никакой другой идентификатор не может прочитать объект, поскольку калькулятор не проверяет данные ACL и не наблюдает за каким-либо внешним уровнем принудительного исполнения.
POSIX.1e ACL — записи именованного пользователя и именованной группы, добавленные в один и тот же файл, заданные с помощью setfacl и прочитанные с помощью getfacl
Записи именованных пользователей и именованных групп не реализованы. Исходный код не содержит ни синтаксического анализатора, ни форматтера для записей ACL, маски ACL и операций setfacl или getfacl. Эти концепции могут мотивировать использование внешнего механизма контроля доступа, но в этой статье невозможно указать синтаксис команд или поведение, кроме признания явных границ калькулятора.
Держите базовый режим видимым при выполнении этой отдельной работы. Введите полученное восьмеричное значение, проверьте владельца, группу и другие тройки и запишите любой специальный бит. Затем используйте авторитетную документацию по файловой системе и подходящие внешние инструменты для именованных записей. Сгенерированный калькулятором предварительный просмотр chmod не создает, не проверяет и не сохраняет ACL.
Именованные записи ACL требуют внешних инструментов, которые здесь не реализованы.
Связь между изменением chmod, битами группового класса и маской ACL зависит от поведения, не реализованного здесь. Калькулятор просто преобразует двенадцатибитный режим и выдает присваивание или восьмеричный аргумент. У него нет состояния ACL, по которому можно было бы вычислить действующие права, поэтому он не может предсказать, будет ли именованная запись ограничена.
Избегайте описания последствий ACL только на основе вывода режима. Изменение с 0640 на 0600 очевидно удаляет три бита группового класса в этой модели; все, что касается именованных пользователей, именованных групп или масок, требует фактического ACL и правил платформы. Проверьте те, у кого есть документация по файловой системе, прежде чем применять отображаемую команду к объекту, несущему ACL.
Взаимодействие маски ACL с chmod требует документации по файловой системе
Наследование по умолчанию ACL также находится за пределами маршрута. На странице нет ввода каталога ACL, нет операции создания и нет поля umask. Переключение целевого селектора с файла на каталог изменяет простые английские глаголы, прикрепленные к фиксированному режиму; он не создает файл, не наследует модель и не рассчитывает разрешения будущего объекта.
По той же причине текущий режим каталога не может предсказать здесь каждый новый дочерний режим. Калькулятор может объяснить, что чтение, запись и выполнение каталога соответствуют листингу, изменению записей и достижению именованного содержимого. Он не может объединять эти базовые биты с записями по умолчанию, запросами на создание или масками процессов, которые он никогда не получает.
Наследование ACL по умолчанию и взаимодействие с маской находятся за пределами этого маршрута.
Рассмотрим предоставленный базовый режим 0640 для файла, которому может потребоваться дополнительное устройство чтения. Калькулятор отображает rw-r-----: чтение и запись владельца, чтение группы, остальные — нет. Это полное утверждение, поддерживаемое его входными данными. Он не идентифицирует одитора и не предлагает четвертый класс, к которому можно отнести эту личность.
Сохраните эту запись базового режима, пока работа ACL выполняется в другом месте. Если внешний процесс позже сообщит о другом режиме, раскодируйте его еще раз и сравните каждый класс. Не вставляйте команду ACL в поле режима и не предполагайте, что предварительный просмотр команды включает именованные записи. Он всегда представляет только отображаемый в данный момент числовой режим.
Рабочий пример: сохранить базовый режим доступным для чтения, пока работа ACL происходит в другом месте.
Другие семейства ACL, правила удаленной файловой системы и поддержка монтирования не установлены этими источниками. Калькулятор не определяет тип хранилища, подключенные опции, операционную систему или доступность операций ACL. Таким образом, отсутствие представления ACL является границей реализации, а не свидетельством того, что у базового объекта отсутствуют более широкие возможности управления доступом.
Обязательная политика, возможности, право собственности и идентичность процесса также разделены. Даже полное знание базового режима не может заменить эти входные данные. Сообщите о преобразовании режима как об одном слое и явно пометьте каждый ненаблюдаемый слой. Это предотвращает ошибочное принятие чистого отображения rwx за полный анализ авторизации.
Другие модели ACL и поддержка крепления не подразумеваются.
Когда трех классов достаточно, калькулятор дает точный и обратимый расчет по ним. Если это не так, оставьте эту базовую учетную запись доступной для чтения, а не принудительно передавайте именованное исключение в другой класс. Восьмеричные, символические представления и представления флажков должны согласовывать одно и то же значение владельца, группы, другого и специального бита.
Правило остановки простое: используйте этот маршрут для арифметики базового режима и внешних авторитетных инструментов для состояния ACL. Никогда не делайте вывод об именованных записях, масках, наследовании или поддержке файловой системы, исходя только из rwx. Тщательный анализ объединяет эти отдельные источники доказательств, не делая вид, что калькулятор реализует структуры контроля доступа, которых нет в его исходном коде.