Инструменты разработчика · Калькулятор Chmod
Четвертая цифра chmod: как работают setuid, setgid и липкий бит
· Как это работает
chmod Юникс рабочий процесс разработчика
Такие режимы, как 4755 и 2775, содержат начальную цифру, которая определяет, от имени кого запускается программа или кому принадлежат новые файлы. В этом посте объясняются три специальных бита и то, как они отображаются в ls -l.
Буква s в drwxrwsr-x — общий каталог проекта ведет себя по-другому, а в выводе ls есть буква, которой нет в базовой шпаргалке.
Символ s в rwxrwsr-x записывает два факта в одной позиции: setgid включен, а также включено групповое выполнение. Реализация сохраняет setgid как восьмеричный 2000, затем заменяет s на символ группового выполнения. Если выбран маркер типа каталога, режим 2775 отображается как drwxrwsr-x, а четырехзначная сводка сохраняет первую цифру специального бита.
Этот вывод представляет собой преобразование, а не наблюдение за файловой системой. Целевой селектор меняет то, как страница объясняет биты, но он никогда не открывает каталог и не проверяет владельца. Для каталога реализованное объяснение гласит, что вновь созданные файлы наследуют группу каталога. Применяет ли конкретная система хранения такое поведение или другая политика влияет на доступ, требуются доказательства, выходящие за рамки этого калькулятора.
Четвертая цифра и ее буквы — 4, 2 и 1 в качестве префикса в знакомом режиме, отображаются как s и t в позиции выполнения, в верхнем регистре, когда бит выполнения ниже отключен.
Начальная восьмеричная цифра объединяет три независимые маски: setuid — 4000, setgid — 2000 и липкий — 1000. Их буквы занимают существующие позиции выполнения, а не добавляют символы к девятипозиционному дисплею. Setuid использует позицию владельца, setgid — позицию группы и закрепляет другую позицию. Матрица предоставляет все три отдельно от обычного чтения, записи и выполнения.
Case показывает базовый бит выполнения. Режим 4755 отображает rwsr-xr-x, поскольку выполнение владельцем сопровождает setuid; 4644 отображает rwSr--r--, потому что это не так. Анализатор считывает обе формы обратно в соответствующие специальные биты и биты выполнения. То же самое правило «нижний против верхнего» дает s или S для setgid и t или T для липкого, сохраняя все комбинации во время обхода.
setuid для исполняемых файлов — как /usr/bin/passwd работает с привилегиями владельца файла и почему Linux игнорирует setuid в интерпретируемых сценариях
Для обычного файла реализованное объяснение setuid зависит от выполнения владельцем. Если присутствуют оба бита, на странице сообщается, что при запуске файла используется личность владельца файла, а не вызывающего абонента. Когда присутствует setuid без выполнения владельца, на дисплее отображается заглавная буква S и поясняется, что запускать нечего. Это исправленная область действия раздела, подтвержденная исходным кодом.
Калькулятор не идентифицирует конкретный исполняемый файл, не запускает его и не проверяет, как платформа обрабатывает сценарии. Его свидетельством является подаваемый режим и выбор цели. Режим 4755 можно разложить на setuid плюс rwxr-xr-x, а предварительный просмотр назначения добавляет u+s после обычных предложений. Это проверяет только рендеринг и объяснение; пригодность программы и ее фактическое исполнение остаются внешними вопросами.
рендеринг setuid и объяснение для обычных файлов
Setgid для каталога представляется независимо от обычных групповых разрешений. Режим 2775 объединяет маску 2000 с владельцем и группой 7 и другими 5. Дисплей rwxrwsr-x поддерживает групповое чтение, запись и выполнение, заменяя видимый x на s. Объяснение каталога связывает специальный бит с наследованием группы каталога для вновь создаваемых файлов.
Удаление группового выполнения с сохранением setgid меняет букву позиции группы на заглавную S. Это видимое предупреждение следует непосредственно от средства визуализации, независимо от целевой формулировки. Страница может сравнивать эти заполненные значения и показывать, какой флажок был изменен, но она не может проверять общий каталог, его текущую группу или идентификаторы, создающие записи. Согласие между точками зрения является арифметическим доказательством, а не оперативным одобрением.
Неприятный момент в каталогах: ограниченное удаление в /tmp и почему 1777 — это не то же самое, что 777
Sticky занимает позицию другого выполнения и вносит восьмеричный код 1000. Для режима каталога 1777 все обычные разрешения остаются включенными, а последним символьным символом становится t. Реализованное объяснение каталога добавляет ограничение на удаление и переименование, а объяснение 777 предупреждает о доступном для записи каталоге без закрепления. Таким образом, преобразователь делает видимой разницу в один бит, не изменяя базовые тройки rwx.
Если липкий присутствует без другого выполнения, вместо этого последним символом будет буква T в верхнем регистре. Анализатор и рендерер сохраняют это различие в обоих направлениях. Страница не проверяет реальный общий каталог, владельцев записей или попытки удаления. Его надежный вывод более узок: предоставленное целое число содержит липкий, его сопутствующий элемент выполнения виден через регистр и выбран пояснительный текст, ориентированный на каталог.
Рабочий пример: создание 2775 для общего каталога — получение цифр и эквивалентного символьного chmod g+s,a+rwx,o-w
Создайте 2775 как четыре видимых компонента: специальную цифру 2 для setgid, цифру владельца 7 для rwx, цифру группы 7 для rwx и другую цифру 5 для r-x. Ввод завершенного значения приводит к получению rwxrwsr-x. Матрица выбирает setgid отдельно, а в сводке наряду с этим специальным битом указываются права владельца, группы и другие права.
Сгенерированный список назначений имеет вид u=rwx,g=rwx,o=rx,g+s. Это отличается от девятизначного дисплея, но представляет то же двенадцатибитное значение. Выбор каталога меняет объяснение на реализованную формулировку группового наследования; выбор файла меняет формулировку без изменения 2775. Калькулятор никогда не проверяет целевую группу и не создает файл, поэтому пример остается моделью, а не предписанием по развертыванию.
Рабочий пример: создание и чтение 2775 для модели общего каталога.
Поведение, возможности и дополнительная семантика монтирования не моделируются. На странице нет входных данных для монтирования, набора возможностей, запроса ядра или проверки файловой системы. Он может представлять собой setuid, setgid и Sticky, а его объяснение может варьироваться в зависимости от обычных файлов и каталогов. Он не может установить, нейтрализует ли внешнее правило, расширяет или интерпретирует эти биты по-другому на реальной цели.
Даже угловая формулировка источника не должна распространяться за пределы интерфейса. Действительный режим специальных битов доказывает, что синтаксический анализатор, средство визуализации, матрица, сводка и сгенерированные назначения согласуются. Это не доказывает, что имело место выполнение, наследование или удаление. Не допускайте неподдерживаемых утверждений политики из диагностики и рассматривайте скопированную команду как инертный текст до тех пор, пока отдельно проверенная среда не предоставит недостающий контекст.
Политика монтирования, возможности и нереализованная угловая семантика остаются внешними.
Реализованный вывод представляет собой путешествие туда и обратно, имеющее позиционное значение. Setuid сопоставляется с позицией выполнения владельца, setgid — с групповым исполнением, а Sticky — с другим исполнением. Нижний регистр означает, что соответствующий бит выполнения включен; Прописные буквы означают, что он выключен. Ведущая восьмеричная цифра и специальные флажки сохраняют одну и ту же информацию, поэтому не нужно выводить какой-либо специальный бит только из текста.
Протестируйте специальный режим, сравнив все представления. Для 2775 ожидайте ведущего 2, позиции группы, установленного поля setgid и сгенерированного дополнения g+s. Несоответствие может привести к проблемам преобразования. Соглашение устанавливает только один последовательный режим. Владение, политика монтирования, возможности, правила приложения и последствия запуска chmod остаются за пределами данных калькулятора браузера.