8.9. Блокировка учетных записей

Проблема

Требуется заблокировать учётную запись и временно запретить пользователю вход в систему, но без удаления учётной записи.

Решение

Чтобы временно деактивировать учётную запись, заблокируйте пароль пользователя ключом -l (lock):

# passwd -l aborg
Password changed.

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

# passwd -u aborg

Комментарий

Ещё один способ заблокировать учётную запись — вставить восклицательный знак в начало поля пароля в файле /etc/shadow:

foobar:!$6$wiD1Qr34$mitGZA76MSYCY04AHIYl:12466:0:99999:7:::

Также можно заменить символ в поле пароля в файле /etc/passwd звездочкой (*) для блокировки:

foober:*:1025:1025:Foober Smith:/home/foober:/bin/bash

Наконец, можно лишить пользователя доступа к командному процессору (shell), установив в качестве оболочки специальную команду /bin/false, которая не позволяет войти в систему:

# usermod -s /bin/false foober

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

Существует также вариант с использованием команды /usr/sbin/nologin, которая выводит сообщение, информирующее пользователя о невозможности входа, при попытке авторизоваться через терминал:

# usermod -s /usr/sbin/nologin foober

Однако самый простой и безопасный способ — использовать команды passwd -l для блокировки и passwd -u для разблокировки. Это позволяет избежать изменений в файлах /etc/passwd и /etc/shadow, что снижает риск ошибок.

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

См. также

passwd(1), passwd(5), usermod(8), shadow(5), nologin(8).