Как хранятся пароли в Linux
Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Хранение паролей в 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$- MD5 (устаревший, небезопасный)$5$- SHA-256$6$- SHA-512 (рекомендуемый по умолчанию в современных дистрибутивах)$y$- Yescrypt (новый алгоритм в некоторых дистрибутивах)
-
Соль (Salt)
- Случайная строка, генерируемая для каждого пароля
- Предотвращает атаки по радужным таблицам
- Даже одинаковые пароли будут иметь разные хэши благодаря разной соли
-
Хэш (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- защищенные данные аутентификации
Рекомендации по безопасности
- Используйте сложные пароли длиной не менее 12 символов
- Регулярно обновляйте пароли критически важных учетных записей
- Внедряйте многофакторную аутентификацию там, где это возможно
- Контролируйте доступ к
/etc/shadow- один из самых важных файлов системы - Используйте современные алгоритмы хэширования (SHA-512 или Yescrypt вместо устаревших)
Эта система обеспечивает баланс между безопасностью и производительностью, делая практически невозможным восстановление исходных паролей даже при компрометации файла с хэшами.