Видалення профілю користувача в Linux – це процес, який вимагає ретельності. Системним адміністраторам необхідно повністю позбутися всіх слідів облікового запису та його доступу до системи. У цій статті ми детально розглянемо кроки, необхідні для цього.
Якщо ваша ціль – просто видалити акаунт користувача без зайвого клопоту з припиненням запущених процесів чи інших очисних дій, скористайтеся інструкціями з розділу “Видалення облікового запису користувача”. Для дистрибутивів на базі Debian знадобиться команда `deluser`, тоді як для інших дистрибутивів Linux використовуйте `userdel`.
Облікові записи користувачів у Linux
З початком ери систем розподілу часу в 1960-х, коли декілька користувачів почали працювати на одному комп’ютері, виникла потреба у відокремленні та захисті даних кожного користувача від інших. Так з’явилися облікові записи користувачів та паролі.
Управління обліковими записами користувачів не обходиться без адміністративних витрат. Їх потрібно створювати, коли користувачу потрібен доступ до комп’ютера, і видаляти, коли такий доступ стає непотрібним. У Linux для повного видалення користувача, його файлів та облікового запису, існує певна послідовність дій.
Якщо ви – системний адміністратор, це ваша відповідальність. Розглянемо, як це зробити.
Описання ситуації
Існує безліч причин, через які може виникнути потреба у видаленні облікового запису. Співробітник може перейти в інший відділ або покинути компанію. Акаунт міг бути створений для тимчасової співпраці з фахівцем з іншої організації. У науковій сфері, спільні дослідження часто охоплюють різні відділи, університети та навіть комерційні структури. Після завершення проекту, системний адміністратор повинен видалити непотрібні акаунти.
Гірший сценарій – це звільнення працівника через неправомірні дії. Такі ситуації зазвичай відбуваються раптово, без попередження, залишаючи системному адміністратору мало часу для підготовки. В цьому випадку потрібно швидко заблокувати, закрити та видалити обліковий запис, одночасно створюючи резервні копії файлів користувача, які можуть знадобитися для подальшого розслідування.
У нашому прикладі, користувач Ерік зробив щось, що вимагає його негайного вилучення з приміщення. Наразі він про це не підозрює і продовжує працювати. Як тільки ви дасте сигнал охороні, його виведуть з будівлі.
Ситуація під контролем. Вся увага зосереджена на вас.
Перевірка активності користувача
Перевіримо, чи дійсно Ерік увійшов в систему, та скільки у нього активних сесій. Команда `who` покаже список активних сеансів.
who
Ерік увійшов один раз. Переглянемо запущені ним процеси.
Аналіз процесів користувача
За допомогою команди `ps` можна отримати список процесів, що виконуються користувачем. Параметр `-u` (user) дозволяє `ps` показати лише процеси, запущені від імені цього користувача.
ps -u eric
Команда `top` надає ту саму інформацію з додатковими деталями. Опція `-U` (User) дозволяє обмежити вивід процесами, що належать конкретному користувачу. Зверніть увагу, що в цьому випадку використовується велика літера “U”.
top -U eric
Ми бачимо використання пам’яті та процесора для кожного процесу і можемо швидко виявити підозрілу активність. Ми плануємо примусово завершити всі його процеси, тому важливо швидко переглянути їх та переконатися, що це не завадить роботі інших користувачів.
Схоже, що він не робить нічого особливого, лише переглядає файл. Ми можемо продовжувати. Але перед тим, як завершити його процеси, ми заблокуємо його обліковий запис, деактивувавши пароль.
Блокування облікового запису
Блокування облікового запису відбувається до завершення процесів, щоб після закриття сесій користувач не зміг знову увійти в систему. Якщо ми змінимо пароль, то він не зможе повторно зайти.
Зашифровані паролі користувачів знаходяться у файлі `/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/shadow`, щоб побачити зміни.
sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow
На початку зашифрованого пароля з’явився знак оклику. Він не замінює перший символ, а додається на початок. Цього достатньо, щоб користувач не зміг увійти в цей обліковий запис.
Тепер, коли ми заблокували можливість входу в систему, ми можемо припинити його процеси.
Завершення процесів
Існують різні способи припинення процесів користувача, але наведена нижче команда є широко розповсюдженою та сучасною. Команда `pkill` знаходить та припиняє процеси. Ми використовуємо сигнал `KILL` та параметр `-u` (user).
sudo pkill -KILL -u eric
Ви повертаєтеся до командного рядка. Щоб переконатися, що операція пройшла успішно, скористаємося командою `who` ще раз:
who
Його сеанс зник. Він вийшов із системи, а його процеси були зупинені. Тепер ситуація не така термінова. Можна спокійно продовжити очищення, поки охорона підходить до столу Еріка.
Архівація домашнього каталогу користувача
Можлива ситуація, коли в майбутньому може знадобитися доступ до файлів користувача. Або в рамках розслідування, або просто для того, щоб новий працівник мав можливість ознайомитися з матеріалами попередника. За допомогою команди `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 – це команди, які запускаються через певний час або інтервал. За допомогою команди `ls` перевіримо, чи є якісь завдання cron, заплановані для цього облікового запису:
sudo ls -lh /var/spool/cron/crontabs/eric
Якщо в цьому місці є файли, це означає, що для цього користувача заплановані завдання cron. Ми можемо їх видалити за допомогою команди `crontab`. Параметр `-r` (remove) видаляє завдання, а параметр `-u` (user) вказує `crontab` завдання якого користувача потрібно видалити.
sudo crontab -r -u eric
Завдання видаляються без повідомлень. Навіть якщо Ерік підозрював, що його виселять, він міг би створити шкідливі завдання. Цей крок – необхідна практика.
Видалення завдань друку
Можливо, у користувача є незавершені завдання друку? Щоб переконатися, ми очистимо чергу друку від завдань, пов’язаних з обліковим записом `eric`. Команда `lprm` видаляє завдання з черги друку. Параметр `-U` (username) дозволяє видалити завдання, які належать вказаному користувачу:
lprm -U eric
Завдання видаляються, і ви повертаєтеся до командного рядка.
Видалення облікового запису користувача
Ми вже створили резервну копію файлів з каталогу `/home/eric/`, тож тепер можемо видалити обліковий запис користувача та його домашній каталог.
Команда для використання залежить від дистрибутиву Linux. Для дистрибутивів на базі Debian це `deluser`, а для інших дистрибутивів Linux — `userdel`.
В Ubuntu доступні обидві команди. Очікувалося, що одна з них є псевдонімом іншої, але це окремі двійкові файли.
type deluser
type userdel
Хоча доступні обидві команди, в дистрибутивах на базі Debian рекомендується використовувати `deluser`:
“`userdel` є низькорівневою утилітою для видалення користувачів. У Debian адміністратори зазвичай повинні використовувати `deluser(8)`.”
Це досить зрозуміло, тому для цієї Ubuntu ми використаємо `deluser`. Оскільки ми також хочемо видалити його домашній каталог, то використаємо параметр `–remove-home`:
sudo deluser --remove-home eric
Для дистрибутивів не на базі Debian використовується команда `userdel` з параметром `–remove`:
sudo userdel --remove eric
Всі сліди облікового запису `eric` видалено. Перевіримо, чи видалено каталог `/home/eric/`:
ls /home
Група `eric` також видалена, оскільки обліковий запис користувача був єдиним учасником. Перевіримо це за допомогою `grep`:
sudo less /etc/group | grep eric
Підсумок
Еріка, за його провини, більше немає. Охорона вже виводить його з будівлі, а ви вже захистили та заархівували його файли, видалили його обліковий запис та очистили систему від будь-яких залишків.
Точність завжди важливіша за швидкість. Ретельно продумуйте кожен крок, перш ніж його робити. Ви ж не хочете, щоб до вас підійшли і сказали: “Ви видалили не того Еріка”.