Как да изтриете потребител в Linux (и да премахнете всяка следа)

Изтриването на потребител в Linux включва повече, отколкото си мислите. Ако сте системен администратор, ще искате да изчистите всички следи от акаунта и достъпа до него от вашите системи. Ще ви покажем стъпките, които да предприемете.

Ако просто искате да изтриете потребителски акаунт от вашата система и не се притеснявате за прекратяване на изпълнявани процеси и други задачи за почистване, следвайте стъпките в раздела „Изтриване на потребителския акаунт“ по-долу. Ще ви трябва командата deluser в базирани на Debian дистрибуции и командата userdel в други дистрибуции на Linux.

Потребителски акаунти в Linux

Още от първите системи за споделяне на време се появяват в началото на 60-те години и донесе със себе си възможността множество потребители да работят на един компютър, имаше нужда да се изолират и разделят файловете и данните на всеки потребител от всички останали потребители. И така потребителските акаунти-и пароли-са родени.

Потребителските акаунти имат административни разходи. Те трябва да бъдат създадени, когато потребителят за първи път има нужда от достъп до компютъра. Те трябва да бъдат премахнати, когато този достъп вече не е необходим. В Linux има последователност от стъпки, които трябва да се следват, за да се премахне правилно и методично потребителят, неговите файлове и акаунтът му от компютъра.

Ако сте системен администратор, тази отговорност пада на вас. Ето как да го направите.

Нашият сценарий

Има редица причини, поради които може да се наложи изтриване на акаунт. Член на персонала може да се премести в друг екип или да напусне компанията напълно. Акаунтът може да е настроен за краткосрочно сътрудничество с посетител от друга компания. Екипните групи са често срещани в академичните среди, където изследователските проекти могат да обхващат отдели, различни университети и дори търговски субекти. При приключването на проекта системният администратор трябва да извърши домакинството и да премахне ненужните акаунти.

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

В нашия сценарий ще се преструваме, че потребител, Ерик, е направил нещо, което гарантира незабавното му отстраняване от помещението. В този момент той не е наясно с това, той все още работи и е влязъл. Веднага след като кимнете на охраната, той ще бъде ескортиран от сградата.

  Как да надстроите до Linux Mint 20.2

Всичко е готово. Всички очи са насочени към теб.

Проверете входа

Нека видим дали наистина е влязъл и ако е, с колко сесии работи. Който командва ще изброи активни сесии.

who

Eric е влязъл веднъж. Да видим какви процеси изпълнява.

Преглед на процесите на потребителя

Можем да използваме командата ps за избройте процесите, които този потребител изпълнява. Опцията -u (потребител) ни позволява да кажем на ps да ограничи изхода си до процесите, изпълнявани под собствеността на този потребителски акаунт.

ps -u eric

Можем да видим същите процеси с повече информация с помощта на командата top. top също има опция -U (потребител) за ограничаване на изхода до процесите, притежавани от един потребител. Обърнете внимание, че този път е с главни букви „U“.

top -U eric

Можем да видим използването на паметта и процесора на всяка задача и можем бързо да търсим всичко с подозрителна активност. Ние сме на път да убием насилствено всичките му процеси, така че е най-безопасно да отделите малко време, за да прегледате бързо процесите и да проверите и да се уверите, че другите потребители няма да бъдат неудобни, когато прекратите процесите на потребителския акаунт eric.

Не изглежда, че прави много, просто използва по-малко за преглед на файл. Безопасни сме да продължим. Но преди да убием неговите процеси, ще замразим акаунта, като заключим паролата.

Заключване на акаунта

Ще заключим акаунта, преди да убием процесите, защото когато убием процесите, потребителят ще излезе от системата. Ако вече сме променили паролата му, той няма да може да влезе отново.

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

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

Командата awk анализира полета от текстови файлове и по избор ги манипулира. Използваме опцията -F (разделител на полета), за да кажем на awk, че файлът използва двоеточие ” : ” за разделяне на полетата. Ще търсим линия с шаблона „ерик“ в нея. За съвпадащи редове ще отпечатаме първото и второто поле. Това са името на акаунта и криптираната парола.

Записът за потребителски акаунт eric е отпечатан за нас.

  Как да играете Minecraft на Linux с GDLauncher

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

sudo passwd -l eric

Ако проверим отново файла /etc/passwd, ще видим какво се е случило.

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

Към началото на криптираната парола е добавен удивителен знак. Той не презаписва първия знак, а просто се добавя към началото на паролата. Това е всичко, което е необходимо, за да попречи на потребителя да може да влезе в този акаунт.

Сега, след като попречихме на потребителя да влезе отново, можем да прекратим неговите процеси и да го излезем.

Убиване на процесите

Има различни начини да убиете процесите на потребителя, но показаната тук команда е широко достъпна и е по-модерна реализация от някои от алтернативите. Командата pkill ще намери и убие процеси. Предаваме сигнала KILL и използваме опцията -u (потребител).

sudo pkill -KILL -u eric

Вие се връщате в командния ред по категорично анти-климактичен начин. За да сме сигурни, че нещо се е случило, нека отново проверим кой:

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 MB. Това може да бъде копирано някъде на безопасно място за по-късен преглед.

Премахване на cron Jobs

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

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

Ако нещо съществува в това местоположение, това означава, че има задания за cron на опашка за този потребителски акаунт. Можем да ги изтрием с тази команда crontab. Опцията -r (премахване) ще премахне заданията, а опцията -u (потребител) казва на crontab чиито работни места да премахнат.

sudo crontab -r -u eric

Задачите се изтриват безшумно. Доколкото знаем, ако Ерик е подозирал, че е на път да бъде изгонен, може да е насрочил злонамерена работа. Тази стъпка е най-добрата практика.

  5 най-добри инструменти за архивиране на сървъри за Linux

Премахване на задания за печат

Може би потребителят е имал чакащи задания за печат? Само за да сме сигурни, можем да изчистим опашката за печат от всякакви задания, принадлежащи на потребителски акаунт eric. Командата lprm премахва задания от опашката за печат. Опцията -U (потребителско име) ви позволява да премахвате работни места, собственост на посочения потребителски акаунт:

lprm -U eric

Заданията се премахват и вие се връщате в командния ред.

Изтриване на потребителския акаунт

Вече направихме резервно копие на файловете от директорията /home/eric/, така че можем да продължим да изтрием потребителския акаунт и едновременно с това да изтрием директорията /home/eric/.

Командата, която да използвате, зависи от това коя дистрибуция на Linux използвате. За Linux базирани на Debian дистрибуции, командата е заблуда и за останалата част от света на Linux, това е userdel.

Всъщност в Ubuntu и двете команди са налични. Половина очаквах едното да е псевдоним на другото, но те са различни двоични файлове.

type deluser
type userdel

Въпреки че и двете са налични, препоръката е да използвате deluser върху дистрибуции, получени от Debian:

„userdel е помощна програма от ниско ниво за премахване на потребители. В Debian администраторите обикновено трябва да използват deluser(8) вместо това.”

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

sudo deluser --remove-home eric

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

sudo userdel --remove eric

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

ls /home

Групата eric също беше премахната, защото потребителският акаунт eric беше единственият запис в нея. Можем да проверим това доста лесно, като прехвърлим съдържанието на /etc/group чрез grep:

sudo less /etc/group | grep eric

Това е обвивка

Ерик, заради греховете си, го няма. Охраната все още го извежда от сградата и вече сте осигурили и архивирали файловете му, изтрили сте акаунта му и сте прочистили системата от всякакви остатъци.

Точността винаги е над скоростта. Уверете се, че обмисляте всяка стъпка, преди да я предприемете. Не искате някой да се приближи до бюрото ви и да каже „Не, другият Ерик“.