Массовая смена паролей в Linux с помощью chpasswd

Введение и назначение утилиты

В практике системного администрирования Linux регулярная смена учетных данных для десятков или сотен пользователей вручную через passwd отнимает слишком много времени. Утилита chpasswd решает эту задачу, позволяя обновлять секретные фразы в пакетном режиме через стандартный ввод (stdin) либо напрямую из заранее подготовленных списков. Такой подход исключает необходимость интерактивного подтверждения и идеально подходит для сценариев автоматизации и bash-скриптов. В данном руководстве на примере Ubuntu мы разберем весь цикл работы с инструментом: от базового конвейера для одной учетной записи до тонкой настройки криптографических хэшей и массового импорта.

Принцип работы chpasswd и обновление учетных данных одного пользователя

Для демонстрации возможностей команды подготовим изолированный тестовый профиль с помощью директивы sudo useradd -m -s /bin/bash testuser1.

Создание тестового пользователя через useradd

В основе логики chpasswd лежит считывание строк строго определенного формата — имя_пользователя:пароль. Передавая связку учетных данных через конвейер (|), администратор может мгновенно перезаписать пароль в системе без диалоговых окон.
⚙️ [Ключевые флаги утилиты]

-c : явно указывает используемый метод хеширования паролей (DES, MD5, SHA256, SHA512 и др.).
-e : информирует систему о том, что переданный пароль уже представляет собой готовый зашифрованный хэш.
-m : принудительно включает алгоритм MD5 (устаревший вариант, используется при совместимости).
-s : задает число раундов (итераций) при вычислении хэшей семейства SHA.
-R : определяет путь к альтернативному корневому каталогу chroot для выполнения операции.

Передача логина и пароля в chpasswd через конвейер

Убедимся в успешном применении изменений, обратившись к файлу /etc/shadow.
Запрос подтверждает: парольная фраза для testuser1 была корректно обработана системным генератором хэшей и записана в защищенное хранилище.

Проверка хэша пароля пользователя в файле /etc/shadow

Пакетное обновление паролей списком из файла

Перейдем к групповой обработке. Сначала сгенерируем еще пару тестовых профилей в системе, исполнив команду sudo useradd -m -s /bin/bash testuser2 && sudo useradd -m -s /bin/bash testuser3.

Инициализация дополнительных учетных записей testuser2 и testuser3

Сформируем текстовый файл user_passwords.txt, куда внесем пары логинов и новых паролей, разделенные двоеточием, по одной связке на строку.

Формирование пакетного файла с парами логин:пароль

Теперь передадим этот файл на обработку chpasswd, применив стандартное перенаправление потока ввода (<).
Утилита последовательно считает все записи и применит изменения сразу ко всем перечисленным пользователям за один шаг без единого запроса к терминалу.

Пакетное применение паролей из файла через перенаправление ввода

Для контроля результата отфильтруем записи в /etc/shadow по целевым именам с помощью регулярного выражения в sudo grep -E '^(testuser2|testuser3):' /etc/shadow | cut -d: -f1.
Обе учетные записи успешно обновлены, что доказывает надежность пакетного развертывания.

Валидация обновленных учетных записей в shadow

Выбор алгоритма хеширования (-c) и параметры криптозащиты

По умолчанию система опирается на стандартные параметры PAM, однако опция -c SHA512 позволяет жестко зафиксировать алгоритм SHA512 при установке нового пароля для testuser1.
Такой подход гарантирует соблюдение строгих корпоративных стандартов криптографической стойкости.

Явное назначение алгоритма хеширования SHA512 для пароля

Проверим структуру сохраненной записи в конфигурации /etc/shadow.
Спецификатор $6$ в начале строки хэша наглядно подтверждает применение функции SHA512.

Проверка идентификатора алгоритма SHA512 в выводе grep

Очистка тестового окружения и удаление учетных записей

Завершив практическую часть, удалим созданные временные профили вместе с их домашними каталогами, выполнив sudo userdel -r testuser1 && sudo userdel -r testuser2 && sudo userdel -r testuser3.

Полное удаление тестовых аккаунтов из системы

В целях безопасности удаляем временный файл со списком паролей командой rm -f user_passwords.txt, исключая утечку незашифрованных данных.

Удаление файла с паролями из файловой системы

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