Команда passwd в Linux: смена пароля и защита учётной записи
Команда passwd в Linux меняет пароль: без аргументов свой, с sudo и именем пользователя чужой, а sudo passwd root задаёт пароль администратора. Кроме этого passwd блокирует учётные записи, показывает их статус и задаёт срок жизни пароля. Ниже все сценарии с примерами для Debian, Ubuntu и Fedora.

Содержание
Что делает passwd и где лежат пароли
Команда passwd меняет пароль учётной записи и управляет его сроком действия и блокировкой. Сами пароли в открытом виде нигде не хранятся: в файле /etc/shadow лежит только хеш. В Debian 13, Ubuntu 26.04 LTS и Fedora 44 по умолчанию используется алгоритм yescrypt, хеши таких паролей начинаются с $y$.
Прочитать и изменить /etc/shadow может только root, поэтому у программы /usr/bin/passwd выставлен бит SUID: обычный пользователь запускает её, а работает она с правами root, но позволяет менять только свой пароль. Проверку пароля, требования к сложности и запись хеша выполняет PAM, так что поведение команды немного различается между дистрибутивами.
В большинстве систем passwd входит в набор shadow-utils (в Debian и Ubuntu это пакет passwd). В Fedora долго жила отдельная реализация на libuser, а с Fedora 40 принят переход на версию из shadow-utils. Если какой-то ключ из статьи не срабатывает, проверьте, откуда у вас программа:
# Fedora, openSUSE
rpm -qf /usr/bin/passwd
# Debian, Ubuntu
dpkg -S /usr/bin/passwdКак сменить свой пароль
Откройте терминал: в GNOME и KDE обычно работает Ctrl+Alt+T, либо найдите Терминал или Konsole в меню приложений.

Затем выполните команду без аргументов:
passwd
Система попросит текущий пароль, потом дважды новый. При вводе на экране ничего не отображается, даже звёздочки: это нормально, просто печатайте и жмите Enter. В конце появится сообщение об успешном обновлении.
Пароль пользователя одновременно является паролем для sudo. Именно его спрашивает система, когда вы ставите программы или правите системные файлы. В старой версии этой статьи это называлось "паролем sudo", но отдельного пароля у sudo нет: меняете свой пароль, меняется и то, что вводится в sudo.
Если вы заходите на сервер по SSH с паролем, после смены пароля текущая сессия не прервётся, а новый пароль понадобится при следующем входе. Ещё надёжнее перейти на ключи, это описано в статье о SSH-клиенте и ключах.
Пароль другого пользователя и пароль root
Администратор может задать пароль любому пользователю, не зная старого. Для этого нужен sudo:
sudo passwd anna
Для root есть два равноценных пути. Первый - войти в оболочку root и выполнить passwd там:
sudo -i
passwd
exit


Второй - сделать то же одной командой. Обратите внимание: sudo здесь спросит ваш собственный пароль, а затем passwd попросит новый пароль для root.
sudo passwd root

Нужен ли вообще пароль root
В Ubuntu, Linux Mint и Kubuntu учётная запись root по умолчанию заблокирована, всё администрирование идёт через sudo. Задавать root пароль там не обязательно, и многие админы этого не делают: меньше паролей, которые можно подобрать. Пароль root полезен, если вы хотите попасть в аварийную консоль systemd, которая его требует, или работаете без sudo, как в минимальной установке Debian. Если пароль root задали, а потом передумали, его можно снова заблокировать командой sudo passwd -l root. Как выдавать права через группы и visudo, рассказано в материале про пользователей и sudo.
Статус учётной записи, блокировка и сброс
Посмотреть, что происходит с паролем пользователя:
sudo passwd -S anna
# статус всех учётных записей
sudo passwd -Sa
Вывод состоит из семи полей: имя, статус пароля (P задан, L заблокирован, NP пароля нет), дата последней смены, минимальный и максимальный срок, период предупреждения и период неактивности в днях. Старая реализация Fedora писала статусы как PS, LK и NP, смысл тот же.
Временно закрыть вход по паролю, например для уволенного сотрудника или скомпрометированной учётки:
sudo passwd -l anna
# вернуть как было
sudo passwd -u anna
Блокировка ставит восклицательный знак перед хешем, и пароль перестаёт подходить. Учётная запись при этом не отключена полностью: вход по SSH-ключу продолжит работать. Чтобы закрыть доступ совсем, дополнительно истеките срок учётной записи: sudo usermod --expiredate 1 anna.
Ключ -e заставляет сменить пароль при следующем входе. Это стандартная процедура, когда вы выдаёте человеку временный пароль:
sudo passwd anna
sudo passwd -e anna
Ключ -d удаляет пароль, и в зависимости от настроек PAM пользователь сможет входить вообще без пароля. На машине, доступной по сети, так делать нельзя.
Срок действия пароля: passwd и chage
Политика сроков задаётся теми же ключами passwd. Полный набор показан в таблице, значения указываются в днях.
| Ключ | Что делает | Пример |
|---|---|---|
| -S, --status | Показать статус пароля | passwd -S anna |
| -l, --lock | Заблокировать пароль | passwd -l anna |
| -u, --unlock | Снять блокировку | passwd -u anna |
| -e, --expire | Потребовать смену при входе | passwd -e anna |
| -d, --delete | Удалить пароль | passwd -d test |
| -n, --mindays | Минимум дней между сменами | passwd -n 1 anna |
| -x, --maxdays | Максимальный срок жизни пароля | passwd -x 180 anna |
| -w, --warndays | За сколько дней предупреждать | passwd -w 14 anna |
| -i, --inactive | Дней после истечения до отключения | passwd -i 30 anna |
| -s, --stdin | Читать пароль со стандартного ввода | для скриптов |
Удобнее смотреть и менять сроки через chage, он показывает даты человеческим языком:
sudo chage -l anna
# пароль живёт 180 дней, предупреждение за 14
sudo chage -M 180 -W 14 anna
# принудительная смена при следующем входе
sudo chage -d 0 anna
Для домашнего компьютера регулярная принудительная смена пароля особой пользы не даёт: люди начинают добавлять к паролю цифру в конце. Современные рекомендации по безопасности советуют длинный уникальный пароль и смену только при подозрении на утечку. Сроки имеют смысл на серверах с несколькими администраторами и там, где этого требует внутренняя политика.
Требования к сложности и почему короткий пароль - плохая идея
В 2021 году эта статья советовала поставить root короткий удобный пароль на домашней машине. Сегодня так делать не стоит. Ноутбук может оказаться в чужих руках, SSH могут случайно открыть наружу, а пароль пользователя защищает и sudo, и связку ключей браузера. Удобный вариант без ущерба безопасности - фраза из четырёх-пяти случайных слов: её легко набирать и трудно подобрать.
Проверку сложности выполняет модуль PAM pwquality. В Fedora он включён по умолчанию, в Debian и Ubuntu ставится отдельно:
# Debian, Ubuntu
sudo apt install libpam-pwquality
# настройки
sudo nano /etc/security/pwquality.conf
Пример строк в конфиге:
minlen = 12
dictcheck = 1
usercheck = 1
Если passwd отвечает BAD PASSWORD и объясняет причину (слишком короткий, словарное слово, похож на имя пользователя), обычный пользователь сменить пароль не сможет. Root получает только предупреждение и может настоять на своём, но лучше прислушаться.
Перед тем как менять pwquality и общие настройки PAM на удалённом сервере, держите открытой вторую сессию с root. Ошибка в конфиге может закрыть вход всем, и без запасной сессии придётся идти к консоли хостинга.
Смена паролей в скриптах: chpasswd и --stdin
Когда нужно задать пароли сразу нескольким учётным записям, используйте chpasswd. Он читает строки вида имя:пароль:
sudo chpasswd
# дальше вводите строки и завершите ввод Ctrl+D
anna:Временный-Пароль-2026
boris:Другой-Временный-2026
Можно подать файл: sudo chpasswd < users.txt. Файл после этого удалите через shred -u users.txt. Не пишите пароли прямо в командной строке вроде echo 'anna:pass' | chpasswd: строка попадёт в историю оболочки, а на многопользовательской машине её видно в списке процессов. Про историю команд и её очистку есть статья о горячих клавишах и истории терминала.
Ключ passwd --stdin делает похожее для одного пользователя, но в разных реализациях passwd он может отсутствовать. Для переносимых скриптов chpasswd надёжнее.
Если пароль забыт: сброс через GRUB
Когда пароль пользователя забыт, а другого администратора нет, пароль сбрасывают из режима восстановления. Нужен физический доступ к компьютеру.
Ubuntu и Debian
- При загрузке откройте меню GRUB: удерживайте Shift на BIOS или нажимайте Esc на UEFI.
- Выберите Дополнительные параметры, затем пункт с recovery mode.
- В меню восстановления выберите root, чтобы получить оболочку.
- Выполните команды ниже и перезагрузитесь.
mount -o remount,rw /
passwd anna
sync
reboot
Fedora
В меню GRUB нажмите e, в конец строки, начинающейся с linux, допишите rd.break и загрузитесь через Ctrl+X. Затем:
mount -o remount,rw /sysroot
chroot /sysroot
passwd anna
touch /.autorelabel
exit
reboot
Файл /.autorelabel нужен из-за SELinux: без него после смены пароля вход может не работать. Первая загрузка после этого идёт дольше обычного. Если диск зашифрован LUKS, без пароля шифрования ни один из способов не сработает, и это правильно. Как не потерять доступ к зашифрованному диску, рассказано в статье о шифровании LUKS и резервном ключе.
Частые ошибки passwd
- Authentication token manipulation error. Чаще всего корень смонтирован только для чтения (в режиме восстановления забыли remount) или кончилось место на диске. Реже повреждены права на
/etc/shadow. - You must wait longer to change your password. Сработал минимальный срок
-n. Администратор может сбросить его:sudo passwd -n 0 anna. - Password unchanged. Новый пароль совпал со старым или вы ошиблись при повторном вводе.
- anna is not in the sudoers file. У пользователя нет прав sudo, и чужой пароль он сменить не может. Добавьте его в группу sudo (Debian, Ubuntu) или wheel (Fedora, Arch).
Подробное описание ключей есть в man-странице passwd, а на своей машине в man passwd и man chage. Если интересна безопасность системы шире, загляните в материал о том, нужен ли антивирус в Linux.
Частые вопросы
Как сменить пароль root в Linux?
Выполните sudo passwd root и дважды введите новый пароль. Sudo сначала спросит пароль вашего пользователя.
Почему при вводе пароля в терминале ничего не отображается?
Так задумано: терминал не показывает даже звёздочки, чтобы никто не узнал длину пароля. Просто печатайте и нажмите Enter.
Чем пароль sudo отличается от пароля пользователя?
Ничем. Sudo спрашивает пароль текущего пользователя, отдельного пароля у sudo нет.
Как заблокировать пользователя в Linux?
Команда sudo passwd -l имя закрывает вход по паролю. Чтобы закрыть и вход по SSH-ключу, добавьте sudo usermod --expiredate 1 имя.
Как заставить пользователя сменить пароль при входе?
Выполните sudo passwd -e имя или sudo chage -d 0 имя. При следующем входе система потребует новый пароль.
Что делать, если забыл пароль пользователя?
Загрузитесь в режим восстановления через GRUB, перемонтируйте корень на запись и выполните passwd имя. В Fedora используется параметр rd.break и chroot /sysroot.
Документация и источники
- passwd(1), Linux manual page, shadow-utils / man7.org, 2026
- chage(1), Linux manual page, shadow-utils / man7.org, 2026
- Changes/LibuserDeprecation, Fedora Project, 2024
Читайте также
- Пользователи и sudo в Linux: добавить пользователя, группы и права
- Как подключиться по SSH из Linux и Windows: от первого входа до туннелей
- Защита SSH-сервера в Linux: ключи, ограничения и журналирование
- Шифрование диска LUKS в Linux без риска потерять данные
- Права доступа в Linux: chmod, chown и разбор Permission denied
Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.