Как удалить пользователя в Linux (и удалить все его «хвосты»)
Удаление пользователя в Linux требует большего, чем вы думаете. Если вы системный администратор, вам нужно удалить все следы учётной записи и доступа к ней из своих систем. Мы покажем вам, что нужно сделать.
Если вы просто хотите удалить учётную запись пользователя из своей системы и не беспокоитесь о завершении каких-либо запущенных процессов и других задачах очистки, выполните действия, описанные в разделе «Удаление учётной записи пользователя» ниже. Вам понадобится команда userdel (у этой команды есть альтернатива deluser). Команду userdel необходимо запускать в Linux от имени пользователя root.
Учётные записи пользователей в Linux
С тех пор как в начале 1960-х годов появились первые системы разделения времени, которые дали возможность нескольким пользователям работать на одном компьютере, возникла необходимость изолировать и отделить файлы и данные каждого пользователя от всех остальных пользователей. Так родились учётные записи пользователей и пароли.
Учётные записи пользователей связаны с работой системного администратора. Их нужно создавать, когда пользователю впервые нужен доступ к компьютеру. Их необходимо удалить, когда этот доступ больше не требуется. В Linux существует последовательность шагов, которые необходимо выполнить, чтобы правильно и методично удалить пользователя, его файлы и его учётную запись с компьютера.
Если вы системный администратор, то ответственность ложится на вас. Эта статья расскажет, как это сделать.
Наш сценарий
Существует множество причин, по которым может потребоваться удаление аккаунта. Сотрудник может перейти в другую команду или вообще покинуть компанию. Учётная запись могла быть создана для краткосрочного сотрудничества с посетителем из другой компании. Команды — обычное дело в академических кругах, где исследовательские проекты могут охватывать факультеты, разные университеты и даже коммерческие организации. По завершении проекта системный администратор должен выполнить уборку и удалить ненужные учётные записи.
Худший сценарий — это когда учётная запись используется для несанкционированной деятельности. Такие события обычно происходят внезапно, без особого предупреждения. Это даёт системному администратору очень мало времени на планирование и срочную необходимость заблокировать, закрыть и удалить учётную запись оставив резервную копию файлов пользователя на случай, если они понадобятся для любой последующей криминалистической экспертизы.
В нашем сценарии мы предположим, что пользователь Эрик, сделал что-то, что требует его немедленного удаления из помещения. При этом в данный момент он выполнил вход в Linux и всё ещё работает.
Проверка входа
Давайте посмотрим, действительно ли он вошёл в систему, и если он есть в ней, то с каким количеством сессий он работает. Команда who выведет список активных сеансов.
Эрик авторизован. Посмотрим, какие процессы он запускает.
Просмотр процессов пользователя
Мы можем использовать команду ps для вывода списка процессов, запущенных этим пользователем. Параметр -u (пользователь) позволяет нам указать ps ограничить его вывод процессами, выполняемыми под владельцем этой учётной записи.
Мы можем увидеть те же процессы с дополнительной информацией, используя команду top. top также имеет опцию -U (пользователь), чтобы ограничить вывод процессами, принадлежащими одному пользователю. Обратите внимание, что на этот раз это заглавная буква «U».
Мы можем видеть использование памяти и ЦП каждой задачей и можем быстро найти что-либо с подозрительной активностью. Мы собираемся принудительно завершить все его процессы, поэтому безопаснее всего воспользоваться моментом, чтобы быстро просмотреть процессы, а также проверить и убедиться, что другие пользователи не будут испытывать неудобств, если вы завершите процессы учётной записи пользователя eric.
Не похоже, что он немного что делает, просто использует less для просмотра файла. Мы можем продолжить. Но прежде чем мы убьём его процессы, мы заблокируем учётную запись, заблокировав пароль.
Блокировка учётной записи
Мы заблокируем учётную запись, прежде чем убивать процессы, потому что, когда мы убиваем процессы, это приведёт к выходу пользователя из системы. Если мы уже изменили его пароль, он не сможет снова войти в систему.
Зашифрованные пароли пользователей хранятся в файле /etc/shadow. Обычно вы не беспокоитесь о следующих шагах, но чтобы вы могли видеть, что происходит в файле /etc/shadow, когда вы блокируете учётную запись, мы чуть отклонимся от темы. Мы можем использовать следующую команду, чтобы просмотреть первые два поля записи для учётной записи пользователя eric.
Команда awk анализирует поля из текстовых файлов и при необходимости манипулирует ими. Мы используем параметр -F (разделитель полей), чтобы указать awk, что файл использует двоеточие «:» для разделения полей. Мы будем искать строку включающей «eric». Для сопоставления строк мы напечатаем первое и второе поля. Это имя учётной записи и зашифрованный пароль (точнее говоря, это хеш пароля).
Для нас напечатана запись для учётной записи пользователя eric.
Чтобы заблокировать учётную запись, мы используем команду passwd. Мы воспользуемся параметром -l (блокировка) и передадим имя учётной записи пользователя для блокировки.
Если мы ещё раз проверим файл /etc/shadow, мы увидим, что произошло.
В начале зашифрованного пароля добавлен восклицательный знак. Он не перезаписывает первый символ, он просто добавляется в начало пароля. Это всё, что нужно, чтобы пользователь не мог войти в эту учётную запись.
Теперь, когда мы предотвратили повторный вход пользователя в систему, мы можем убить его процессы и выйти из системы.
Остановка процессов пользователя
Есть разные способы убить процессы пользователя, но показанная здесь команда широко доступна и является более современной реализацией, чем некоторые из альтернатив. Команда pkill найдёт и завершит процессы. Мы передаём сигнал KILL и используем параметр -u (пользователь).
Команда ничего не вывела. Чтобы убедиться, что что-то произошло, давайте ещё раз проверим командой who:
Его сеанс закончился. Он вышел из системы, и его процессы остановлены. Теперь мы можем немного расслабиться и продолжить зачистку.
Архивирование домашнего каталога пользователя
Не исключено, что в подобном сценарии в будущем потребуется доступ к файлам пользователя. Либо в рамках расследования, либо просто потому, что их замене, возможно, придётся обратиться к работе их предшественника. Мы будем использовать команду tar для архивации всего домашнего каталога.
Мы используем следующие опции:
- c: создать архивный файл.
- f: использовать указанное имя файла в качестве имени архива.
- j: использовать сжатие bzip2.
- v: Предоставлять подробный вывод при создании архива.
Большая часть вывода на экран будет прокручиваться в окне терминала. Чтобы проверить, создан ли архив, используйте команду ls. Мы используем параметры -l (длинный формат) и -h (удобочитаемый).
Создан файл размером 722 МБ. Его можно скопировать в безопасное место для последующего просмотра.
Удаление заданий cron
Нам лучше проверить, не запланированы ли какие-либо задания cron для учётной записи пользователя eric. Задание cron — это команда, которая запускается через определённое время или через определённые промежутки времени. Мы можем проверить, есть ли какие-либо задания cron для этой учётной записи пользователя, используя ls:
Обратите внимание, что задания cron в Debian и производных дистрибутивах помещены в папку вида «/var/spool/cron/crontabs/ПОЛЬЗОВАТЕЛЬ». В Arch Linux и производных дистрибутивах эти задания помещены в папку вида «/var/spool/cron/ПОЛЬЗОВАТЕЛЬ».
Если что-то существует в этом месте, это означает, что для этой учётной записи пользователя поставлены в очередь задания cron. Мы можем удалить их с помощью этой команды crontab. Параметр -r (удалить) удаляет задания, а параметр -u (пользователь) сообщает crontab, чьи задания следует удалить.
Задания автоматически удаляются. Насколько нам известно, если бы Эрик подозревал, что его собираются выселить, он мог бы добавить в расписание злонамеренную задачу. Не стоит пренебрегать этим шагом.
Удаление заданий на печать
Возможно, у пользователя были отложенные задания на печать? На всякий случай мы можем очистить очередь печати от любых заданий, принадлежащих учётной записи пользователя eric. Команда lprm удаляет задания из очереди печати. Параметр -U (имя пользователя) позволяет удалять задания, принадлежащие указанной учётной записи пользователя:
Задания будут удалены, и вы вернётесь в командную строку.
Удаление учётной записи пользователя
Мы уже создали резервные копии файлов из каталога /home/eric/, поэтому мы можем продолжить и одновременно удалить учётную запись пользователя и каталог /home/eric/.
Имеется две разных команды с одинаковыми функциями: userdel и deluser. Проверьте, какая из них присутствует в вашей системе. На проверенных мной дистрибутивах всегда присутствовала userdel, поэтому я покажу на её примере, как на более универсальной утилите.
Поскольку мы также хотим, чтобы их домашний каталог был удалён, мы используем флаг —remove:
Можно добавить опцию -f для принудительного удаления файлов, даже если они не принадлежат указанному пользователю:
Все следы учётной записи пользователя eric были стёрты. Мы можем проверить, что каталог /home/eric/ был удалён:
Группа eric также была удалена, поскольку учётная запись пользователя eric была единственной записью в ней. Мы можем довольно легко это проверить, передав содержимое /etc/group через grep:
Чтобы найти все файлы пользователя eric, выполните команду:
Вы можете найти файлы пользователя eric и поменять разрешения на них следующим образом:
Как удалить пользователя в Linux Ubuntu
Удаление пользователей — один из важнейших навыков для тех, кто занимается системным администрированием. Неактуальные учетные записи могут угрожать безопасности сервера, поэтому их нужно своевременно удалять.
В этой статье мы расскажем, как удалять пользователей в Linux Ubuntu и что нужно сделать перед удалением, чтобы не навредить системе.
Проверка учетной записи пользователя
Прежде всего проверьте, авторизован ли пользователь в системе. Если пользователь в данный момент подключен к серверу, вам будет необходимо разорвать его соединение, а затем изменить пароль. Посмотреть список пользователей, подключенных к серверу в данный момент, можно при помощи команды:
Если пользователь, которого вы хотите удалить, авторизован на сервере, проверьте, какие процессы им запущены. Если какие-то операции выполняются пользователем в фоновом режиме, вы не сможете удалить учетную запись. Посмотреть список запущенных процессов можно с помощью команды:
где username — имя пользователя, которого вы хотите удалить.
Просмотр пользователей
Блокировка пользователя
Далее вам нужно заблокировать доступ пользователя на сервер. Для этого введите команду:
где username — имя пользователя, для которого нужно заблокировать доступ к учетной записи.
Удаление процессов
В операционной системе Ubuntu невозможно удалить учетную запись пользователя, если им запущены какие-либо процессы. Завершить запущенные процессы можно с помощью команд:
- kill — используется для удаления процессов по их идентификатору. Чтобы узнать идентификатор процесса, воспользуйтесь командой sudo ps -u username , где username — имя пользователя. Идентификатор будет отображаться в графе PID. Например, чтобы удалить процесс с PID 12345, нужно ввести команду:
- pkill — используется для удаления процессов по их названию. Например, чтобы удалить процесс с именем nano у пользователя username, нужно ввести команду:
- killall — используется для удаления всех процессов, включая дочерние. В случае, когда вы собираетесь удалить пользователя, удобнее всего использовать эту команду. Рекомендуем добавить к команде ключ 9 — тогда процессы получат сигнал SIGKILL и будут принудительно завершены. Например, чтобы удалить все процессы для пользователя username, нужно ввести команду:
После удаления всех процессов пользователя не должно быть в списке авторизованных на сервере. Проверить это можно при помощи утилиты who . Если пользователь перестал отображаться в выводе этой команды, можно переходить к следующему шагу.
Остановка заданий планировщика cron
Перед удалением учетной записи в Ubuntu рекомендуется удалить все задачи, запущенные пользователем. Это необходимо для того, чтобы после удаления учетной записи на сервере не выполнялись скрипты, не принадлежащие ни одному пользователю. Чтобы удалить все запущенные пользователем задания планировщика cron, введите команду:
где username — имя пользователя, которого вы собираетесь удалить.
Удаление учетной записи пользователя
Теперь перейдем непосредственно к удалению учетной записи. Для удаления пользователя воспользуемся утилитой deluser . Если ввести эту команду без дополнительных параметров, то учетная запись удалится, но все файлы пользователя останутся. Вы можете использовать следующие ключи:
- —remove-all-files — удалит все файлы, которые принадлежат пользователю, включая домашнюю директорию;
- —remove-home — удалит только домашнюю директорию пользователя;
- —backup — создаст резервную копию домашнего каталога и файлов почты и разместит ее в корневой папке;
- —backup-to — создаст резервную копию домашнего каталога и файлов почты и разместит ее в заданной вами папке.
Создать резервную копию домашнего каталога можно вручную. Для этого необходимо ввести команду:
- /parh/to/archive/usernamehomedir.tar.gz — итоговое расположение резервной копии,
- /home/username — путь к директории, архив которой вы создаете.
С помощью команды deluser можно как удалить пользователя из группы Linux, так и удалить саму группу. Чтобы удалить пользователя из группы, используйте команду:
- username — имя пользователя,
- group — название группы.
Чтобы удалить пользователя и группу username без удаления файлов, введите команду:
Чтобы удалить пользователя и группу username, а также все принадлежащие пользователю файлы, введите команду:
Чтобы удалить пользователя и группу username, а также домашнюю директорию пользователя, введите команду:
Чтобы удалить пользователя и группу username, а также создать резервную копию домашней директории пользователя, введите команду:
При необходимости домашнюю директорию пользователя можно удалить вручную с помощью команды:
Не удаляется пользователь Mac OS — подвисает. Решено
На MacBook требовалось удалить пользователя, но стандартная процедура удаления пользователя заходила в тупик, открытое окно Пользователи и группы подвисало и не отвечало на дальнейшие манипуляции. Рассмотрим здесь почему подвисает эта процедура и как это все сделать, а для тех, кто заходит сюда в поисках «как удалить администратора» расскажу один секрет:
Как удалить администратора MacOS.
Создайте сначала второго администратора, зайдите с него в систему и удаляйте первого администратора
Оказалось в удаляемом пользователе Mac OS содержалось более 1000000 файлов, что и давало такое подвисание удаления.
Удалить пришлось сначала папку пользователя и потом стандартно в настройках пользователя.
Стандартное удаление пользователя Mac OS.
Нам требуется удалить пользователя «567″.
Заходим с другого пользователя «Mac«, у которого права Администратора (сам себя пользователь удалить не сможет ).
Нажимаем на «Пользователи и группы».
Нажимаем на замочек.
Вводим пароль Администратора (пользователя «mac») .
Кликаем по пользователю «567» и Кликаем по заначку «-» внизу списка пользователей.
Если в данном моменте подвисает удаление на несколько минут — возможно требуется приступать к плану Б, который любезно предоставил наш мастер
Удаляем «вручную» пользователя Mac OS.
Заходим в Finder (просмотр файлов / файловый менеджер).
Переходим к папке «/».
Переходим в папку «Пользователи».
И удаляем папку пользователя «567» под названием «а567».
Вводим пароль администратора.
Папка пользователя переносится в корзину. Чистим её.