Библиотека сайта rus-linux.net
Как в Linux удалить пользовательский аккаунт вместе с домашней директорией
Оригинал: How to Delete User Accounts with Home Directory in Linux
Автор: Aaron Kili
Дата публикации: 4 декабря 2015 года
Перевод: А. Кривошей
Дата перевода: ноябрь 2016 г.
Системному администратору Linux может потребоваться удалить пользовательский аккаунт, который долгое время не используется, или если пользователь покинул компанию, либо по каким-либо другим причинам.
При удалении аккаунта пользователя в Linux также важно удалить его домашнюю директорию, чтобы освободить дисковое пространство.
1. Для демонстрационных целей сначала я создам два пользовательских аккаунта с домашними директориями в своей системе с помощью команды adduser - для пользователей tecmint и linuxsay
# adduser tecmint # passwd tecmint # adduser linuxsay # passwd linuxsay
Вместо команды adduser можно использовать команду useradd, они предназначены для одного и того же.
2. Теперь давайте посмотрим, как удалить аккаунт пользователя в Linux с помощью команд deluser (для Debian и его производных) и userdel (для систем на базе RedHat/CentOS)
Директивы в конфигурационном файле для команд deluser и userdel определяют, как они работают с пользовательскими файлами и директориями.
Давайте посмострим на конфигурационный файл для команды deluser, расположенный в /etc/deluser.conf для производных Debian, таких как Ubuntu, Kali, Mint; и расположенный в /etc/login.defs для RHEL/CentOS/Fedora.
Значения в этих файлах заданы по умолчанию и могут быть изменены в соответствии с вашими нуждами.
# vi /etc/deluser.conf [В Debian и его производных] # vi /etc/login.defs [В системах на базе RedHat/CentOS]
3. Если пользователь авторизован на сервере, он пользуется различными службами и запускает разные процессы. Необходимо помнить, что полностью удалить пользователя можно только тогда, когда он не авторизован на сервере.
Блокирование пользовательского аккаунта в Linux
Сначала заблокируем пользовательский аккаунт, чтобы пользователь не имел доступа в систему. Это предотвратит запуск процессов в системе от его имени. Для этого используется команда passwd с ключом –lock:
# passwd --lock tecmint Locking password for user tecmint. passwd: Success
Поиск и завершение всех запущенных процессов пользователя
Далее необходимо найти все работающие процессы этого пользователя и завершить их, определив PID процессов, принадлежащих нашему пользователю:
# pgrep -u tecmint 1947 1959 2091 2094 2095 2168 2175 2179 2183 2188 2190 2202 2207 2212 2214
Затем вы можете вы можете вывести список процессов с более подробной информацией:
После того, как вы нашли все запущенные процессы пользователя, вы можете завершить их с помощью команды killall:
# killall -9 -u tecmint
-9 - это номер для сигнала SIGKILL, вместо него можно использовать ключ -KILL.
Замечание: в последних релизах RedHat/CentOS 7.x и Fedora 21+ вы можете получить следующую ошибку:
-bash: killall: command not found
Для ее предотвращения необходимо установить соответствующий пакет, как показано ниже:
# yum install psmisc [В RedHat/CentOS 7.x] # dnf install psmisc [В Fedora 21+ ]
Резервное копирование данных пользователя перед удалением
Далее вы можете сделать резервную копию пользовательских файлов, если нужно. Для создания архива с резервной копией домашней директории пользователя я использовал утилиту tar:
# tar jcvf /user-backups/tecmint-home-directory-backup.tar.bz2 /home/tecmint
Удаление аккаунта и файлов пользователя
Теперь вы можете безопасно удалить пользователя вместе с его домашней директорией. Для удаления всех файлов пользователя предназначена опция --remove-all-files:
# deluser --remove-home tecmint [On Debian and its derivatives] # userdel --remove tecmint [On RedHat/CentOS based systems]