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

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

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

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

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

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

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

Наш сценарий

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

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

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

  Как сделать резервную копию миров Minecraft в Linux

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

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

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

who

кто в окне терминала

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

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

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

ps -u eric

ps -u eric в окне терминала

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

top -U eric

top -U eric в окне терминала

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

Вывод команды top -U eric в окне терминала

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

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

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

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

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

sudo awk -F: '/ eric / {print $ 1, $ 2}' / etc / shadow в окне терминала

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

  Как установить MicroPad в Linux

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

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

sudo passwd -l eric

sudo passwd -l eric в окне терминала

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

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

sudo awk -F: '/ eric / {print $ 1, $ 2}' / etc / shadow в окне терминала

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

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

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

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

sudo pkill -KILL -u eric

sudo pkill -KILL -u eric в окне терминала

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

who

кто в окне терминала

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

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

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

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

c: создать архивный файл.
f: использовать указанное имя файла в качестве имени архива.
j: использовать сжатие bzip2.
v: Предоставлять подробный вывод при создании архива.

sudo tar cfjv eric-20200820.tar.bz /home/eric

sudo tar cfjv eric-20200820.tar.bz / home / eric в окне терминала

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

ls -lh eric-20200802.tar.bz

sudo tar cfjv eric-20200820.tar.bz / home / eric в окне терминала

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

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

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

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

sudo ls -lh / var / spool / cron / crontabs / eric в окне терминала

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

sudo crontab -r -u eric

sudo crontab -r -u eric в окне терминала

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

  Как настроить общий доступ к рабочему столу VNC в Linux с помощью TigerVNC

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

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

lprm -U eric

lprm -U eric в окне терминала

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

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

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

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

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

type deluser
type userdel

введите deluser в окно терминала

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

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

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

sudo deluser --remove-home eric

sudo deluser --remove-home eric в окне терминала

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

sudo userdel --remove eric

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

ls /home

ls / home в окне терминала

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

sudo less /etc/group | grep eric

sudo less / etc / group |  grep eric в окне терминала

Это обертка

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

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