← Назад к вопросам

Как хранятся пароли в Linux

1.8 Middle🔥 132 комментариев
#Linux и администрирование#Безопасность

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Хранение паролей в Linux: механизмы и принципы

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

Местоположение и формат хранения

Пароли традиционно хранятся в файле /etc/shadow, который доступен только для чтения пользователем root. Этот файл содержит записи в следующем формате:

username:$algorithm$salt$hash:last_change:min:max:warn:inactive:expire:reserved

Пример реальной записи:

alice:$6$somesalt$vGXlLbCbK5QvHcO...hash...:19475:0:99999:7:::

Ключевые компоненты системы хранения паролей

  1. Алгоритм хэширования

    • $1$ - MD5 (устаревший, небезопасный)
    • $5$ - SHA-256
    • $6$ - SHA-512 (рекомендуемый по умолчанию в современных дистрибутивах)
    • $y$ - Yescrypt (новый алгоритм в некоторых дистрибутивах)
  2. Соль (Salt)

    • Случайная строка, генерируемая для каждого пароля
    • Предотвращает атаки по радужным таблицам
    • Даже одинаковые пароли будут иметь разные хэши благодаря разной соли
  3. Хэш (Hash)

    • Результат применения криптографической функции к комбинации пароля и соли
    • Невозможно обратить в исходный пароль

Механизм проверки пароля

Когда пользователь вводит пароль при аутентификации, система выполняет следующее:

# Упрощенная логика проверки
stored_hash = get_from_shadow(username)
algorithm, salt, expected_hash = parse(stored_hash)

input_password = get_user_input()
calculated_hash = hash_function(algorithm, salt, input_password)

if calculated_hash == expected_hash:
    grant_access()
else:
    deny_access()

Современные практики и безопасность

Ключевые аспекты безопасности:

  • Интенсивность вычислений: Современные алгоритмы (like SHA-512 с множеством раундов) специально замедлены, чтобы затруднить brute-force атаки
  • Адаптивные алгоритмы: Yescrypt и Argon2 могут настраивать сложность вычислений в зависимости от аппаратных возможностей
  • Защита от перебора: Файл /etc/shadow имеет права доступа 640 (rw-r-----), что предотвращает чтение обычными пользователями

Пример работы с утилитами

Создание и изменение паролей осуществляется через утилиты:

# Изменение пароля пользователя (интерактивно)
passwd username

# Просмотр информации о хэше пароля (только для root)
sudo grep 'username' /etc/shadow

# Создание хэша пароля для скриптов
mkpasswd --method=sha-512 --stdin
# или
openssl passwd -6 -salt "randomsalt"

Эволюция методов хранения

Исторически пароли хранились в /etc/passwd (отсюда и название), но из-за необходимости чтения этого файла многими программами была реализована более безопасная схема с разделением:

  • /etc/passwd - общедоступная информация о пользователях
  • /etc/shadow - защищенные данные аутентификации

Рекомендации по безопасности

  1. Используйте сложные пароли длиной не менее 12 символов
  2. Регулярно обновляйте пароли критически важных учетных записей
  3. Внедряйте многофакторную аутентификацию там, где это возможно
  4. Контролируйте доступ к /etc/shadow - один из самых важных файлов системы
  5. Используйте современные алгоритмы хэширования (SHA-512 или Yescrypt вместо устаревших)

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