Канонический режим ChmodCalc содержит четыре восьмеричные цифры. Первая представляет setuid, setgid и sticky, следующие три — владельца, группу и остальных. Обычная цифра складывается из read 4, write 2 и execute или search 1. Это преобразование битов, а не рекомендация для реального пути.
Каждая обычная цифра задаёт одну тройку rwx
Полная таблица: 0 = ---, 1 = --x, 2 = -w-, 3 = -wx, 4 = r--, 5 = r-x, 6 = rw-, 7 = rwx. Поэтому 0640 превращается в rw-r-----: владелец 6, группа 4, остальные 0. Независимое преобразование троек не позволяет ошибочно считать 640 десятичным числом.
Ведущий ноль показывает специальную цифру
ChmodCalc принимает три обычные восьмеричные цифры и добавляет специальную цифру 0: 755 становится 0755. Четыре цифры напрямую показывают все двенадцать моделируемых битов. Значения вне 0000–7777, цифры 8 и 9, префиксы вроде 0o, знаки, пробелы и лишние цифры отклоняются.
Девятисимвольная строка — не полная грамматика chmod
rwxr-xr-x — полное отображение прав в стиле ls. ChmodCalc преобразует этот снимок в 0755. Он не разбирает изменяющие состояние выражения u+x, g-w или u=rwx,g=rx,o=rx: относительным операциям нужен исходный режим, а пропущенные классы могут зависеть от umask.