
Удаление пользователя в 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
Это обертка
Эрика за его грехи больше нет. Служба безопасности все еще выгоняет его из здания, а вы уже заархивировали его файлы, удалили его учетную запись и очистили систему от всех остатков.
Точность всегда важнее скорости. Обязательно обдумывайте каждый шаг, прежде чем его делать. Вы же не хотите, чтобы кто-то подошел к вашему столу и сказал: «Нет, другой Эрик».