Русский

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

Как umask определяет разрешения по умолчанию для новых файлов и папок

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

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

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

Новые файлы не начинаются с 777; сначала наносится маска. В этом посте показана точная побитовая операция, почему файлы и каталоги в конечном итоге различаются, а также как рассуждать об umask 022, 027 и 077.

Файлы, которые веб-сервер не может прочитать — задание cron записывает файлы 600 в каталог, который обслуживает nginx, и никто ни для чего не запускал chmod

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

Статья 501 обеспечивает необходимые диагностические ограничения. Действительный режим может сосуществовать с неверным владельцем или отсутствующим битом выполнения в родительском каталоге. Эта страница не получает ни идентификатора процесса, ни информации о пути. Он может сравнить 600 с предложенным 640 и предоставить добавленный бит группового чтения, но не может приписать исходный режим umask, службе, оболочке или файловой системе.

Откуда берутся новые разрешения — запрошенный режим (обычно 666 для файлов, 777 для каталогов) и маска процесса.

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

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

Запрошенные режимы создания и umask — это фоновые входные данные, которые здесь не реализованы.

AND-NOT арифметические действия должны выполняться вне этого калькулятора. Его ядро ​​принимает одно завершенное целое число и разбивает его на именованные флаги; у него нет второго операнда для маски создания. Следовательно, страница не может продемонстрировать формулу маски, сравнить вычитание с побитовыми операциями или решить, правильно ли было выполнено внешнее вычисление до перехода в его результирующий режим.

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

AND-NOT арифметические действия должны выполняться вне калькулятора

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

Отдельно предоставленный результат 755 можно проверить таким же образом. Его отображение — rwxr-xr-x, с активным выполнением для всех классов; 644 — это rw-r--r--, при этом выполнение отсутствует. Страница ясно демонстрирует эту разницу. Он не извлекает значения из 666, 777, 022 или любых других фоновых входных данных, поскольку эти вычисления не реализованы в CHMOD_SOURCES.

Калькулятор может сравнивать результирующие режимы файлов и каталогов, но не создает ни одного из них.

В примере с ограничительной маской оставьте вычисления внешними и декодируйте только заявленные результаты. Если наблюдаемый обычный файл — 640, калькулятор отображает rw-r-----; если наблюдаемый каталог — 750, он отображает rwxr-x---. Владелец сохраняет более широкий доступ в обоих случаях, группа получает более узкий набор, а остальные не получают ничего. Эти утверждения следуют непосредственно из завершенных модусов.

Другая внешняя пара, 600 и 700, делает тот же метод проверки видимым, не заявляя о его происхождении. Режим 600 разрешает чтение и запись в файл только владельцу. Режим 700 разрешает чтение, запись и выполнение в каталоге только владельцу. Преобразователь может подтвердить каждый класс и бит, но он не может сопоставить ни один из результатов с конкретной настройкой umask на основании собственных данных.

Рабочий пример: декодирование результатов, вычисленных извне, для ограничительных масок.

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

Предварительный просмотр команды не закрывает этот пробел в доказательствах. Он может указывать указанный путь и при необходимости отображать -R, но никогда не открывает путь и не считывает настройки процесса. Аналогично, целевой селектор меняет пояснительный язык, а не определяет тип объекта. Последовательное преобразование сужает вопрос о разрешениях; он не показывает, какой компонент выбрал режим и был ли выбор преднамеренным.

Когда процесс получает umask, это является свидетельством вне репозитория.

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

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

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

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

Рассматривайте результат как один диагностический уровень. Декодированные 640 или 750 могут выявить неожиданное предоставление или отсутствие бита выполнения, а статья 501 напоминает нам о необходимости проверять владение и обход родительского каталога отдельно. Остановитесь, прежде чем называть причину. Калькулятор показывает, как предоставленное значение сопоставляется с разрешениями; он не дает никаких оснований для претензий по поводу настроек оболочки, службы, контейнера, ACL или файловой системы по умолчанию.