Русский

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

Разрешения SSH слишком открыты: какие именно режимы нужны ~/.ssh и почему

· Почему это важно

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

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

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

Разрешения 0644 для id_ed25519 слишком открыты — ключ, который работал вчера, отклоняется после копирования на новую машину

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

Сравните наблюдаемый режим с частной предустановкой. Входы 0644, 644 и 0o644 эквивалентны, а изменение на 600 удаляет групповое чтение и другое чтение, сохраняя при этом чтение и запись владельца. Сгенерированная команда инертна. Поведение клиента, право собственности, списки управления доступом и семантика хранилища требуют доказательств, выходящих за рамки этого преобразователя.

Почему клиент вообще проверяет — закрытый ключ, который могут прочитать другие, больше не является секретным, поэтому ssh отказывается ему доверять

Репозиторий помечает 600 как «частный файл» и описывает доступ только для владельца. Его арифметика поддерживает это описание: 6 дает владельцу право на чтение и запись, а оба нуля удаляют обычные разрешения для группы и других. Символический результат: rw-------. Это доказывает отсутствие грантов в режиме, а не то, что клиент их принимает.

В источниках не появляется сообщение о реализации OpenSSH, руководстве, конфигурации или времени выполнения, поэтому предустановка не может установить политику отказа. Калькулятор не обещает, что один режим устранит каждую ошибку и не проверит содержимое ключа. Он достоверно показывает, предоставляет ли кандидат доступ к чтению, записи или выполнению за пределами класса владельца, и не более того.

Репозиторий помечает 600 как частный; политика отказа клиента требует доказательств OpenSSH

Поведение StrictModes здесь не реализовано и не проверено. В браузере нет сервера SSH, проверки домашнего каталога, поиска владельца или ввода конфигурации. Он не может знать, обращаются ли к авторизованным_ключам, может ли другое удостоверение записывать каталог или применяется ли какой-либо параметр. Вход в режим выполняет преобразование, а не решение демона или аудит файловой системы.

Точные биты и точная политика — это отдельные вопросы. Режим 600 подтверждает rw-------, а 700 подтверждает rwx------. Ни один из них не идентифицирует владельца, не проверяет родительские каталоги и не моделирует демон. Соберите документацию сервера и доказательства файловой системы независимо, а затем используйте калькулятор для декодирования наблюдений, не представляя его результаты в виде вердикта StrictModes или полного аудита безопасности.

Поведение StrictModes здесь не реализовано и не проверено.

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

Другие правила файлов, связанные с SSH, остаются внешними. Хотя открытые ключи и авторизованные_ключи могут иметь значение, репозиторий не предоставляет для них проверенных требований. Калькулятор может декодировать 644 как rw-r--r--, но не может подтвердить принятие SSH. Любая более широкая таблица требований требует авторитетных доказательств OpenSSH, отсутствующих в этих источниках и существующей статье.

600 и 700 поставляются частными пресетами; другие правила файла SSH остаются внешними

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

Строки каталога работают аналогично. Предоставленный drwx------ становится 700, поскольку распознанный символ типа удаляется перед анализом девяти позиций разрешений. В сводке может отображаться префикс каталога. На странице не указан ~/.ssh, не обнаружены файлы, владельцы или индикаторы ACL, поэтому это преобразование нельзя описывать как аудит.

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

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

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

Потеря режима в инструментах передачи и файловых системах является свидетельством внешнего хранилища.

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

Эта граница не позволяет рассматривать каждый сбой SSH как работу chmod. Если наблюдаемый режим отличается от частного пресета, калькулятор показывает точные биты; если он уже соответствует, маршрут не содержит дополнительных SSH доказательств. Продолжить внешнюю диагностику, а не расширять доступ. Успешное преобразование не является аутентификацией, и предварительный просмотр ничего не выполняет.

Вывод: частный означает 600 и 700 — и калькулятор подтверждает, что режим, который вы собираетесь установить, ничего не дает группе или другим лицам.

Вывод, основанный на репозитории, заключается в том, что 600 и 700 резервируют обычные разрешения для владельца. Их символические формы rw------- и rwx------ не содержат групповых или других грантов. Восьмеричный, символьный текст, флажки и сводка проверяют эти представления, а некорректные позиции отклоняются. Ничто из этого не доказывает принятие, владение, действительность ключа или аутентификацию SSH.

Не превращайте преобразование в универсальную политику SSH. Маршрут не реализует StrictModes, не проверяет домашние каталоги, не идентифицирует владельцев и не проверяет файлы ключей. Используйте его для подтверждения пустой группы и других классов, а затем полагайтесь на авторитетные доказательства SSH и реальную систему. Копирование отображаемой команды передает ответственность оболочке и файловой системе.