Команда userdel -r username удаляет учётную запись вместе с домашним каталогом — но если удалить пользователя с правами суперпользователя, не проверив, кто ещё имеет доступ к sudo, система может остаться вообще без администратора. Именно эта ошибка чаще всего ломает серверы и рабочие станции при чистке учётных записей.
В этой статье разберём, как безопасно удалить пользователя с привилегиями root: как проверить его права, чем отличаются команды userdel и deluser, что делать с процессами и файлами удаляемой учётной записи и почему самого root удалить нельзя — только заблокировать.
Что такое суперпользователь и кого именно вы удаляете
Под суперпользователем в Linux обычно понимают две разные вещи. Первая — системная учётная запись root с UID 0, которая существует всегда и не может быть удалена штатными средствами. Вторая — обычный пользователь, добавленный в группу sudo (в Debian, Ubuntu) или wheel (в CentOS, Fedora, RHEL), который получает административные права через команду sudo.
Именно второй тип учётных записей и подлежит удалению. Например, бывший сотрудник, временный администратор или тестовый аккаунт, которому когда-то выдали права. Прежде чем удалять, убедитесь, кто именно перед вами — это определяет дальнейшие шаги.
Подготовка: проверки перед удалением
Сначала проверьте, состоит ли пользователь в привилегированных группах. Выполните в терминале:
id username
groups username
Если в выводе присутствует sudo или wheel — перед вами администратор. Далее критически важно убедиться, что после удаления в системе останется хотя бы один пользователь с правами sudo, либо вы знаете пароль root. Иначе вы потеряете возможность администрировать машину.
- 🔍 Проверьте список всех sudo-пользователей:
getent group sudo(илиwheel). - 📋 Убедитесь, что у удаляемого пользователя нет запущенных процессов:
ps -u username. - 💾 Сделайте резервную копию домашнего каталога, если там могут быть нужные данные.
- ⏰ Проверьте задачи cron пользователя:
crontab -u username -l— они будут удалены вместе с записью.
☑️ Подготовка к удалению суперпользователя
Удаление пользователя командой userdel
Базовая утилита для удаления учётных записей — userdel. Она есть во всех дистрибутивах. Простейший вариант удаляет только запись о пользователе, оставляя его файлы на диске:
sudo userdel username
Чтобы удалить пользователя вместе с домашним каталогом и почтовым спулом, добавьте флаг -r:
sudo userdel -r username
Если у пользователя есть работающие процессы, команда завершится ошибкой. В этом случае завершите сеанс принудительно: sudo pkill -u username, а затем повторите удаление. В крайнем случае существует флаг -f для принудительного удаления, но применять его стоит осознанно — он может оставить систему в несогласованном состоянии, если процессы активны.
⚠️ Внимание: флаг -r удаляет домашний каталог безвозвратно. Если там хранятся рабочие файлы, скрипты или ключи SSH, сначала скопируйте их в надёжное место.
Удаление через deluser в Debian и Ubuntu
В дистрибутивах семейства Debian доступна более дружелюбная обёртка — deluser. Она умеет то же самое, но синтаксис читается проще, а поведение можно настроить через конфигурационный файл /etc/deluser.conf.
sudo deluser --remove-home username
Отдельная полезная возможность — удалить пользователя только из группы, не трогая саму учётную запись. Так можно лишить администратора привилегий, оставив ему обычный доступ:
sudo deluser username sudo
Это удобно, когда человек продолжает работать в системе, но права суперпользователя ему больше не нужны. После выполнения команды проверьте результат через id username — группа sudo должна исчезнуть из списка.
Что делать с root: блокировка вместо удаления
Учётную запись root нельзя удалить командой userdel — система откажется, и это сделано намеренно: UID 0 нужен для работы самой ОС. Но вход под root можно и часто нужно заблокировать, особенно на серверах, доступных из сети.
sudo passwd -l root
Эта команда блокирует пароль root, не трогая саму учётную запись. Дополнительно стоит запретить вход root по SSH: в файле /etc/ssh/sshd_config установите параметр PermitRootLogin no и перезапустите службу командой sudo systemctl restart ssh. Точное имя службы зависит от дистрибутива — в некоторых системах она называется sshd.
⚠️ Внимание: блокируйте root только после того, как убедились, что sudo работает у другого пользователя. Проверить это можно командой sudo -l из-под нужной учётной записи.
Сравнение способов удаления
| Способ | Команда | Что удаляет | Когда применять |
|---|---|---|---|
| userdel | userdel username | Только учётную запись | Когда файлы пользователя нужно сохранить |
| userdel -r | userdel -r username | Запись, домашний каталог, почту | Полное удаление уволенного сотрудника |
| deluser | deluser --remove-home username | Запись и домашний каталог | Debian/Ubuntu, удобный синтаксис |
| deluser из группы | deluser username sudo | Только права sudo | Лишить привилегий, сохранив аккаунт |
| Блокировка root | passwd -l root | Возможность входа под root | Усиление безопасности сервера |
Типичные ошибки и как их избежать
Самая частая ошибка — удаление единственного администратора. После удаления последнего sudo-пользователя восстановить права можно только через режим восстановления или загрузку с Live-носителя, что на удалённом сервере без физического доступа может оказаться невозможным.
- 🚫 Не удаляйте пользователя, не завершив его процессы — команда завершится ошибкой или оставит «осиротевшие» файлы.
- 🗂 Не забывайте про файлы вне домашнего каталога:
userdel -rне трогает данные в других разделах и каталогах. Найти их поможетfind / -user username. - 🔑 Проверьте авторизованные SSH-ключи других пользователей — иногда ключ удаляемого администратора прописан в общих аккаунтах.
Ещё одна ситуация — «залипшие» задачи в cron и systemd-таймеры, настроенные от имени удаляемого пользователя. Записи crontab удаляются вместе с аккаунтом, но если скрипты лежали в его каталоге и вы удалили его с флагом -r, автоматизация перестанет работать. Перенесите такие задачи на системного пользователя заранее.
Как найти все файлы удалённого пользователя
После удаления учётной записи файлы остаются с числовым UID вместо имени владельца. Найдите их командой: sudo find / -uid 1001 -ls (подставьте UID удалённого пользователя, его можно было посмотреть заранее через id). Затем либо удалите файлы, либо смените владельца: sudo chown -R newuser:newgroup /путь/к/каталогу.
Восстановление, если что-то пошло не так
Если вы удалили последнего администратора, но система ещё доступна в текущей сессии root — немедленно создайте нового sudo-пользователя: adduser admin, затем usermod -aG sudo admin. Действовать нужно до завершения текущего сеанса.
Когда доступ к root уже потерян, на локальной машине поможет загрузка в режиме восстановления (recovery mode) через меню загрузчика или загрузка с LiveUSB с последующим chroot в систему. На удалённом сервере без резервного доступа ситуация сложнее — большинство хостинг-провайдеров предлагают консоль восстановления через панель управления, уточните наличие такой функции у вашего провайдера.
Часто задаваемые вопросы
Можно ли удалить самого root?
Нет. Учётная запись root с UID 0 необходима системе и не удаляется штатными средствами. Вместо удаления её блокируют: командой passwd -l root отключают пароль, а в настройках SSH запрещают вход под root.
Чем userdel отличается от deluser?
userdel — базовая низкоуровневая утилита, присутствующая во всех дистрибутивах. deluser — обёртка в Debian и Ubuntu с более понятным синтаксисом и настройками через /etc/deluser.conf. По сути обе команды выполняют одну задачу.
Что будет с файлами пользователя после удаления?
Без флага -r домашний каталог останется на диске, но владельцем будет числовой UID. С флагом -r каталог и почтовый спул удаляются. Файлы вне домашнего каталога не удаляются ни в одном из вариантов — их нужно искать и обрабатывать отдельно.
Как лишить пользователя прав sudo, не удаляя аккаунт?
Исключите его из привилегированной группы: sudo deluser username sudo в Debian/Ubuntu или sudo gpasswd -d username wheel в системах с группой wheel. Учётная запись и файлы останутся нетронутыми.
Удаляются ли задачи cron вместе с пользователем?
Да, персональный crontab пользователя удаляется вместе с учётной записью. Если на этих задачах завязаны резервное копирование или другие процессы, заранее перенесите их на системного пользователя или в общесистемный /etc/crontab.