Jak odstranit uživatele v systému Linux (a odstranit každou stopu)

Smazání uživatele v Linuxu zahrnuje více, než si myslíte. Pokud jste správce systému, budete chtít ze svých systémů vymazat všechny stopy účtu a jeho přístupu. Ukážeme vám, jak postupovat.

Pokud chcete pouze smazat uživatelský účet ze svého systému a nechcete ukončit žádné běžící procesy a další úkoly čištění, postupujte podle kroků v části „Odstranění uživatelského účtu“ níže. V distribucích založených na Debianu budete potřebovat příkaz deluser a v ostatních distribucích Linuxu příkaz userdel.

Uživatelské účty v systému Linux

Od té doby první systémy sdílení času se objevily na počátku 60. let 20. století a přinesli s sebou schopnost více uživatelů pracovat na jednom počítači, vznikla potřeba izolovat a rozdělit soubory a data každého uživatele od všech ostatních uživatelů. A tak uživatelské účty –a hesla-narodili se.

Uživatelské účty mají administrativní režii. Musí být vytvořeny, když uživatel poprvé potřebuje přístup k počítači. Je třeba je odebrat, když již tento přístup není vyžadován. V systému Linux existuje posloupnost kroků, které je třeba dodržet, aby bylo možné správně a metodicky odstranit uživatele, jeho soubory a účet z počítače.

Jste-li správcem systému, odpovědnost spadá na vás. Zde je návod, jak na to.

Náš scénář

Existuje mnoho důvodů, proč může být nutné účet smazat. Zaměstnanci se mohou stěhovat do jiného týmu nebo úplně opustit společnost. Účet mohl být nastaven pro krátkodobou spolupráci s návštěvníkem z jiné společnosti. Týmy jsou běžné v akademické sféře, kde výzkumné projekty mohou zahrnovat katedry, různé univerzity a dokonce i komerční subjekty. Na konci projektu musí správce systému provést úklid a odstranit nepotřebné účty.

Nejhorší je, když někdo odejde pod mrakem kvůli nějakému přestupku. Takové události se obvykle stávají náhle, s malým varováním. To dává správci systému velmi málo času na plánování a naléhavou potřebu nechat účet uzamknout, uzavřít a smazat – s kopií souborů uživatele zálohovanou pro případ, že by byly potřeba pro jakékoli forenzní analýzy po uzavření.

V našem scénáři budeme předstírat, že uživatel, Eric, udělal něco, co vyžaduje jeho okamžité odstranění z areálu. V tuto chvíli si toho není vědom, stále pracuje a je přihlášený. Jakmile kývnete na ochranku, bude eskortován z budovy.

  Jak ladit skripty Linux Bash pomocí ShellCheck

Všechno je nastaveno. Všechny oči jsou na vás.

Zkontrolujte přihlášení

Podívejme se, zda je skutečně přihlášen, a pokud ano, s kolika relacemi pracuje. Kdo velí zobrazí seznam aktivních relací.

who

Eric je jednou přihlášen. Podívejme se, jaké procesy běží.

Kontrola procesů uživatele

Můžeme použít příkaz ps seznam procesů, které tento uživatel spouští. Volba -u (uživatel) nám umožňuje říci ps, aby omezil svůj výstup na procesy běžící pod vlastnictvím tohoto uživatelského účtu.

ps -u eric

Pomocí příkazu top můžeme vidět stejné procesy s více informacemi. top má také volbu -U (uživatel), která omezuje výstup na procesy vlastněné jedním uživatelem. Všimněte si, že tentokrát je to velké „U“.

top -U eric

Vidíme využití paměti a CPU každou úlohou a můžeme rychle vyhledat cokoli s podezřelou aktivitou. Chystáme se násilně zabít všechny jeho procesy, takže je nejbezpečnější věnovat chvíli rychlé kontrole procesů a zkontrolovat a ujistit se, že ostatní uživatelé nebudou obtěžováni, když ukončíte procesy uživatelského účtu erica.

Nezdá se, že by toho dělal moc, jen používá méně k zobrazení souboru. Můžeme pokračovat. Ale než zabijeme jeho procesy, zmrazíme účet uzamčením hesla.

Uzamčení účtu

Než procesy zabijeme, zamkneme účet, protože když procesy zabijeme, uživatel odhlásí. Pokud jsme mu již změnili heslo, nebude se moci znovu přihlásit.

Zašifrovaná uživatelská hesla jsou uložena v souboru /etc/shadow. S těmito dalšími kroky byste se normálně neobtěžovali, ale abyste viděli, co se stane v souboru /etc/shadow, když zamknete účet, uděláme malou odbočku. Pomocí následujícího příkazu se můžeme podívat na první dvě pole záznamu pro uživatelský účet eric.

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

Příkaz awk analyzuje pole z textových souborů a případně s nimi manipuluje. Používáme volbu -F (oddělovač polí), abychom awk řekli, že soubor používá k oddělení polí dvojtečku ” : ”. Budeme hledat řádek se vzorem „eric“. Pro shodu řádků vytiskneme první a druhé pole. Jedná se o název účtu a šifrované heslo.

Záznam pro uživatelský účet eric je vytištěn za nás.

K uzamčení účtu používáme příkaz passwd. Použijeme volbu -l (zámek) a předat jméno uživatelského účtu k uzamčení.

sudo passwd -l eric

Pokud znovu zkontrolujeme soubor /etc/passwd, uvidíme, co se stalo.

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

Na začátek šifrovaného hesla byl přidán vykřičník. Nepřepíše první znak, pouze se přidá na začátek hesla. To je vše, co je potřeba k tomu, aby se uživatel nemohl přihlásit k tomuto účtu.

  6 bezplatných strategických her ke stažení na Linux

Nyní, když jsme zabránili uživateli v opětovném přihlášení, můžeme zabít jeho procesy a odhlásit ho.

Zabíjení procesů

Existují různé způsoby, jak zabít procesy uživatele, ale zde uvedený příkaz je široce dostupný a je modernější implementací než některé alternativy. Příkaz pkill najde a zabije procesy. Předáváme signál KILL a používáme volbu -u (uživatel).

sudo pkill -KILL -u eric

Jste vráceni do příkazového řádku rozhodně anti-klimatickým způsobem. Abychom se ujistili, že se něco stalo, znovu zkontrolujte, kdo:

who

Jeho relace je pryč. Byl odhlášen a jeho procesy byly zastaveny. To situaci trochu ubralo na naléhavosti. Teď si můžeme trochu odpočinout a pokračovat ve zbytku čištění, zatímco ochranka jde k Ericovu stolu.

Archivace domovského adresáře uživatele

Není vyloučeno, že v takovém scénáři bude v budoucnu vyžadován přístup k souborům uživatele. Buď jako součást vyšetřování, nebo jednoduše proto, že jejich nahrazení se možná bude muset vrátit k práci jejich předchůdce. Použijeme příkaz tar k archivaci celého jejich domovského adresáře.

Možnosti, které používáme, jsou:

c: Vytvořte archivní soubor.
f: Jako název archivu použijte zadaný název souboru.
j: Použijte kompresi bzip2.
v: Poskytněte podrobný výstup při vytváření archivu.

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

V okně terminálu se bude posouvat mnoho výstupů na obrazovce. Chcete-li zkontrolovat, zda byl archiv vytvořen, použijte příkaz ls. Používáme volby -l (dlouhý formát) a -h (čitelný pro člověka).

ls -lh eric-20200802.tar.bz

Byl vytvořen soubor o velikosti 722 MB. Toto lze zkopírovat na bezpečné místo pro pozdější kontrolu.

Odstranění cron Jobs

Raději bychom měli zkontrolovat, zda jsou pro uživatelský účet eric naplánovány nějaké úlohy cron. Úloha cron je příkaz, který se spouští v určených časech nebo intervalech. Můžeme zkontrolovat, zda jsou pro tento uživatelský účet naplánovány nějaké úlohy cron pomocí ls:

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

Pokud v tomto umístění něco existuje, znamená to, že pro tento uživatelský účet jsou ve frontě úlohy cron. Můžeme je odstranit pomocí tohoto příkazu crontab. Volba -r (odstranit) odstraní úlohy a volba -u (uživatel) říká crontab jejichž práce odstranit.

sudo crontab -r -u eric

Úlohy jsou tiše odstraněny. Co víme, kdyby Eric měl podezření, že bude vystěhován, možná si naplánoval zákeřnou práci. Tento krok je osvědčený postup.

  Jak streamovat a škubat z příkazového řádku v systému Linux

Odebírání tiskových úloh

Možná měl uživatel čekající tiskové úlohy? Pro jistotu můžeme tiskovou frontu vyčistit od všech úloh patřících uživatelskému účtu eric. Příkaz lprm odebere úlohy z tiskové fronty. Možnost -U (uživatelské jméno) vám umožňuje odebrat úlohy vlastněné pojmenovaným uživatelským účtem:

lprm -U eric

Úlohy jsou odstraněny a vy se vrátíte na příkazový řádek.

Smazání uživatelského účtu

Soubory z adresáře /home/eric/ jsme již zazálohovali, takže můžeme pokračovat a smazat uživatelský účet a zároveň smazat adresář /home/eric/.

Příkaz, který se má použít, závisí na distribuci Linuxu, kterou používáte. Pro Linuxové distribuce založené na Debianu, příkaz je deluser a pro zbytek světa Linuxu, je to userdel.

Ve skutečnosti jsou na Ubuntu k dispozici oba příkazy. Napůl jsem očekával, že jeden bude aliasem druhého, ale jsou to odlišné binární soubory.

type deluser
type userdel

Ačkoli jsou k dispozici oba, doporučujeme použít deluser na distribucích odvozených z Debianu:

“userdel je nízkoúrovňový nástroj pro odstraňování uživatelů. V Debianu by správci měli místo toho obvykle používat deluser(8).

To je dostatečně jasné, takže příkaz k použití na tomto počítači Ubuntu je klamný. Protože také chceme, aby byl odstraněn jejich domovský adresář, používáme příznak –remove-home:

sudo deluser --remove-home eric

Příkaz, který se má použít pro distribuce mimo Debian, je userdel s příznakem –remove:

sudo userdel --remove eric

Všechny stopy uživatelského účtu eric byly vymazány. Můžeme zkontrolovat, že adresář /home/eric/ byl odstraněn:

ls /home

Skupina eric byla také odstraněna, protože v ní byl jediným záznamem uživatelský účet eric. Můžeme to zkontrolovat poměrně snadno tím, že obsah /etc/group propojíme grep:

sudo less /etc/group | grep eric

Je to Wrap

Eric je za své hříchy pryč. Bezpečnost ho stále odvádí z budovy a vy jste již zabezpečili a archivovali jeho soubory, smazali jeho účet a vyčistili systém od všech zbytků.

Přesnost vždy předčí rychlost. Než to uděláte, zvažte každý krok. Nechcete, aby někdo přišel k vašemu stolu a řekl: „Ne, ten druhý Eric.“