Русский

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

Модель разрешений Unix: от chmod 1970-х годов до битов режима POSIX

· Фон

chmod Юникс контроль доступа

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

Модель владельца /group/others просуществовала десятилетия с удивительно небольшим количеством изменений. В этом посте рассказывается, откуда он взялся, что стандартизировал POSIX и почему он до сих пор подходит для большинства рабочих мест.

Дизайн 1970-х годов в вашем развертывании 2020-х годов — каждый контейнер и CI-раннер по-прежнему говорит на rwx, и это помогает понять, почему

В текущих развертываниях по-прежнему присутствуют такие режимы, как 0644, и символические строки, такие как rw-r--r--, но этот репозиторий не является историческим архивом. Его свидетельством является реализованное представление: двенадцать битов, детерминированное преобразование и проверка восьмеричного и символического ввода. Даты, изобретатели, патенты и заявления о каждой системе, основанной на Unix, требуют источников, которые здесь не представлены.

Таким образом, калькулятор предлагает представление компактной модели разрешений в настоящем времени. Одно целое число управляет владельцем, группой и другими элементами управления, а также setuid, setgid и Sticky. Вывод можно проверить в восьмеричной, символьной и матричной форме. Соглашение доказывает последовательное преобразование, а не происхождение, универсальность или применение модели.

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

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

Режим 640 демонстрирует структуру без заявления о происхождении. Владелец 6 означает чтение и запись, группа 4 означает чтение, а другие 0 означают отсутствие обычных разрешений, создавая rw-r-----. Как поясняется в статье 501, это вычисляемые флаги; идентификация фактического владельца, группы или процесса остается за пределами преобразования.

Реализованная модель имеет девять обычных битов в трех классах.

Setuid реализован как маска 4000. В обычном файле средство визуализации помещает s в позицию выполнения владельца, когда присутствуют как setuid, так и владелец выполнения. Если setuid присутствует без выполнения владельца, вместо него он помещает S, сохраняя важную разницу между специальным битом и обычным битом выполнения, находящимся под ним.

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

реализовано поведение setuid; патентная история не получена

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

Sticky обозначается 1000 и занимает другую позицию выполнения как t или T. Для каталога инструмент описывает ограниченное удаление общих записей. Это реализованная семантика, представленная калькулятором; не устанавливается история ветвей или межсистемное происхождение, и ни одна действующая файловая система не запрашивается для подтверждения локального поведения.

Поведение специального бита каталога описывается без заявления о происхождении.

Источник называет каждую маску напрямую: 0400, 0200 и 0100 для владельца; 0040, 0020 и 0010 для группы; 0004, 0002 и 0001 для других. Setuid, setgid и Sticky добавляют 4000, 2000 и 1000. Преобразование — это побитовое тестирование и побитовое объединение, а не обращение к внешнему стандарту.

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

Проверяются именованные битовые маски и семантика преобразования; заявления об универсальных стандартах не являются

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

Генерация команд не расширяет модель. Он выдает восьмеричный аргумент или явные предложения u=, g= и o=, добавляя u+s, g+s или +t, когда это необходимо. Результатом остается отображаемый текст. При ответственной проверке все доказательства ACL, возможностей, владения и принудительного исполнения собираются отдельно, прежде чем рассматривать режим как полную учетную запись управления доступом.

Списки управления доступом и возможности находятся за пределами модели реализованного режима.

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

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

Другие истории разрешений операционной системы опущены без источников.

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

Этого достаточно для практического вывода без урока истории. Расшифруйте режим, проверьте каждый класс и обратите внимание, заменяет ли s, S, t или T позицию выполнения. Затем остановитесь там, где заканчиваются доказательства: калькулятор объясняет представление и сгенерированный текст, в то время как право собственности, политика, поведение файловой системы и историческое происхождение требуют других источников.