Как удалить пользователя в Linux (и удалить все следы)

Удаление пользователя в Linux требует большего, чем вы думаете. Если вы системный администратор, вам нужно удалить все следы учетной записи и доступа к ней из своих систем. Мы покажем вам, что нужно предпринять.

Если вы просто хотите удалить учетную запись пользователя из своей системы и не беспокоитесь о завершении каких-либо запущенных процессов и других задачах очистки, выполните действия, описанные в разделе «Удаление учетной записи пользователя» ниже. Вам понадобится deluserкоманда в дистрибутивах на основе Debian и userdelкоманда в других дистрибутивах Linux.

Учетные записи пользователей в Linux

С тех пор, как в начале 1960-х годов появились первые системы разделения времени, которые дали возможность нескольким пользователям работать на одном компьютере, возникла необходимость изолировать и разделить файлы и данные каждого пользователя от всех остальных пользователей. Так родились учетные записи пользователей и пароли.

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

Если вы системный администратор, то ответственность ложится на вас. Вот как это сделать.

Наш сценарий

Существует множество причин, по которым может потребоваться удаление учетной записи. Сотрудник может перейти в другую команду или вообще покинуть компанию. Учетная запись могла быть создана для краткосрочного сотрудничества с посетителем из другой компании. Команды - обычное дело в академических кругах, где исследовательские проекты могут охватывать факультеты, разные университеты и даже коммерческие организации. По завершении проекта системный администратор должен выполнить уборку и удалить ненужные учетные записи.

Худший сценарий - это когда кто-то скрывается под облаком из-за проступка. Такие события обычно происходят внезапно, без всякого предупреждения. Это дает системному администратору очень мало времени на планирование и срочную необходимость заблокировать, закрыть и удалить учетную запись с резервной копией файлов пользователя на случай, если они понадобятся для любой криминалистической экспертизы после закрытия.

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

Все готово. Все взоры прикованы к тебе.

Проверить логин

Посмотрим, действительно ли он вошел в систему, и если он есть, то с каким количеством сессий он работает. Команда whoвыведет список активных сеансов.

ВОЗ

Эрик авторизуется один раз. Посмотрим, какие процессы он запускает.

Обзор процессов пользователя

Мы можем использовать psкоманду для вывода списка процессов, запущенных этим пользователем. Параметр -u(пользователь) позволяет нам указать, psчто вывод можно ограничить процессами, выполняемыми под владельцем этой учетной записи.

пс -у эрик

Мы можем увидеть те же процессы с дополнительной информацией, используя topкоманду. top также есть -Uопция (пользователь), чтобы ограничить вывод процессами, принадлежащими одному пользователю. Обратите внимание, что на этот раз это заглавная буква «U».

топ -U Эрик

Мы можем видеть использование памяти и ЦП каждой задачей и можем быстро найти что-либо с подозрительной активностью. Мы собираемся принудительно убить все его процессы, поэтому безопаснее всего воспользоваться моментом, чтобы быстро просмотреть процессы, а также проверить и убедиться, что другие пользователи не будут испытывать неудобств, когда вы завершите ericпроцессы учетной записи пользователя .

Не похоже, что он много делает, просто использует  lessдля просмотра файла. Мы в безопасности. Но прежде чем убить его процессы, мы заблокируем учетную запись, заблокировав пароль.

СВЯЗАННЫЕ: Как использовать команду ps для мониторинга процессов Linux

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

Мы заблокируем учетную запись перед тем, как убить процессы, потому что, когда мы убиваем процессы, пользователь выйдет из системы. Если мы уже изменили его пароль, он не сможет снова войти в систему.

Зашифрованные пароли пользователей хранятся в /etc/shadowфайле. Обычно вы не беспокоитесь о следующих шагах, но чтобы вы могли видеть, что происходит в /etc/shadow файле, когда вы блокируете учетную запись, мы сделаем небольшой обходной путь. Мы можем использовать следующую команду, чтобы просмотреть первые два поля записи для  eric учетной записи пользователя.

sudo awk -F: '/ eric / {print $ 1, $ 2}' / etc / shadow

Команда awk анализирует поля из текстовых файлов и при необходимости манипулирует ими. Мы используем параметр -F(разделитель полей), чтобы указать, awkчто в файле используется двоеточие ” :” для разделения полей. Мы будем искать строку с узором «eric» в ней. Для сопоставления строк мы напечатаем первое и второе поля. Это имя учетной записи и зашифрованный пароль.

Для нас напечатана запись для учетной записи пользователя eric.

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

sudo passwd -l eric

Если мы /etc/passwdснова проверим файл, мы увидим, что произошло.

sudo awk -F: '/ eric / {print $ 1, $ 2}' / etc / shadow

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

Теперь, когда мы предотвратили повторный вход пользователя в систему, мы можем убить его процессы и выйти из системы.

Убивая процессы

Есть разные способы убить процессы пользователя, но показанная здесь команда широко доступна и является более современной реализацией, чем некоторые из альтернатив. Команда pkillнайдет и завершит процессы. Мы передаем сигнал KILL и используем параметр -u(user).

sudo pkill -KILL -u eric

Вы вернетесь в командную строку явно антиклиматическим образом. Чтобы убедиться, что что-то случилось, проверим еще whoраз:

ВОЗ

Его сеанс закончился. Он вышел из системы, и его процессы остановлены. Это частично сняло срочность ситуации. Теперь мы можем немного расслабиться и продолжить зачистку, пока охрана идет к столу Эрика.

СВЯЗАННЫЙ: Как убить процессы из терминала Linux

Архивирование домашнего каталога пользователя

Не исключено, что в подобном сценарии в будущем потребуется доступ к файлам пользователя. Либо в рамках расследования, либо просто потому, что их замене, возможно, потребуется вернуться к работе их предшественника. Мы будем использовать tarкоманду для архивации всего их домашнего каталога.

Мы используем следующие варианты:

  • c : создать архивный файл.
  • f : использовать указанное имя файла в качестве имени архива.
  • j : использовать сжатие bzip2.
  • v : Предоставлять подробный вывод при создании архива.
sudo tar cfjv eric-20200820.tar.bz / home / eric

Большая часть вывода на экран будет прокручиваться в окне терминала. Чтобы проверить, создан ли архив, воспользуйтесь lsкомандой. Мы используем варианты -l(длинный формат) и -h(читаемый человеком).

ls -lh eric-20200802.tar.bz

Создан файл размером 722 МБ. Его можно скопировать в безопасное место для последующего просмотра.

Удаление заданий cron

Нам лучше проверить, не cronзапланированы ли какие-либо задания для учетной записи пользователя eric. Задание cron- это команда, которая запускается через определенное время или через определенные промежутки времени. Мы можем проверить, есть ли какие-либо cronзадания, запланированные для этой учетной записи, используя ls:

sudo ls -lh / var / spool / cron / crontabs / eric

Если что-то существует в этом месте, это означает, что cronдля этой учетной записи есть задания в очереди. Мы можем удалить их с помощью этой crontabкоманды. Параметр -r(удалить) удаляет задания, а параметр -u(пользователь) указывает crontab, какие задания следует удалить.

sudo crontab -r -u eric

Задания автоматически удаляются. Насколько нам известно, если бы Эрик подозревал, что его собираются выселить, он мог бы запланировать злонамеренную работу. Этот шаг - лучшая практика.

Удаление заданий на печать

Возможно, у пользователя были отложенные задания на печать? На всякий случай мы можем очистить очередь печати от любых заданий, принадлежащих учетной записи пользователя eric. Команда lprmудаляет задания из очереди печати. Параметр -U(имя пользователя) позволяет удалять задания, принадлежащие указанной учетной записи пользователя:

lprm -U eric

Задания будут удалены, и вы вернетесь в командную строку.

Удаление учетной записи пользователя

Мы уже создали резервные копии файлов из /home/eric/каталога, поэтому мы можем продолжить и удалить учетную запись пользователя и удалить /home/eric/каталог одновременно.

Используемая команда зависит от того, какой дистрибутив Linux вы используете. Для дистрибутивов Linux на основе Debian команда есть deluser, а для остального мира Linux - это так userdel.

Собственно, в Ubuntu доступны обе команды. Я почти ожидал, что один будет псевдонимом другого, но это разные двоичные файлы.

тип deluser
введите userdel

Хотя они оба доступны, рекомендуется использовать их deluserв дистрибутивах, производных от Debian:

« userdelЭто утилита низкого уровня для удаления пользователей. В Debian администраторам обычно следует использовать deluser(8) вместо этого ».

Это достаточно ясно, поэтому команда для использования на этом компьютере с Ubuntu такова deluser. Поскольку мы также хотим, чтобы их домашний каталог был удален, мы используем --remove-homeфлаг:

sudo deluser --remove-home Эрик

Команда, которую следует использовать для дистрибутивов, отличных от Debian userdel, с --removeфлагом:

sudo userdel - удалить Эрика

Все следы учетной записи пользователя ericудалены. Мы можем проверить, что /home/eric/каталог был удален:

ls / home

ericГруппа также была удалена , поскольку учетная запись пользователя ericбыла только запись в него. Мы можем довольно легко это проверить, пропустив содержимое /etc/groupчерез grep:

sudo less / etc / group | grep eric

Это обертка

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

Точность всегда важнее скорости. Обязательно обдумывайте каждый шаг, прежде чем его делать. Вы же не хотите, чтобы кто-то подошел к вашему столу и сказал: «Нет, другой Эрик».