Jak usunąć użytkownika w systemie Linux (i usunąć wszystkie ślady)

Usunięcie konta użytkownika w systemie Linux może być bardziej złożone, niż się wydaje. Jako administrator, powinieneś zadbać o usunięcie wszelkich śladów konta oraz jego dostępu do systemu. W tym artykule opiszemy, jakie kroki należy podjąć, aby to zrobić.

Jeśli celem jest jedynie usunięcie konta użytkownika bez martwienia się o procesy, które mogą być w trakcie realizacji, możesz skorzystać z instrukcji zawartych w sekcji „Usuwanie konta użytkownika”. W przypadku dystrybucji opartych na Debianie użyjesz polecenia deluser, a w innych dystrybucjach Linuksa polecenia userdel.

Konta użytkowników w systemie Linux

Od momentu, gdy pierwsze systemy z podziałem czasu zadebiutowały w latach 60., pojawiła się potrzeba zarządzania dostępem wielu użytkowników do jednego komputera. To doprowadziło do stworzenia kont użytkowników i haseł, które oddzielają dane każdego użytkownika.

Konta użytkowników wymagają stałej administracji. Muszą być zakładane, gdy użytkownik potrzebuje dostępu do systemu, oraz usuwane, gdy dostęp ten już nie jest potrzebny. W systemie Linux istnieje określona procedura, którą należy wykonać, aby prawidłowo i dokładnie usunąć konto użytkownika oraz jego pliki.

Jako administrator systemu, to na Tobie spoczywa odpowiedzialność za te działania. Oto, jak powinieneś to zrobić.

Nasz scenariusz

Istnieje wiele powodów, dla których konto użytkownika może wymagać usunięcia. Pracownik może zmieniać zespół lub opuszczać firmę. Konto mogło zostać utworzone na czas określony, na przykład dla gościa z innej organizacji. W środowisku akademickim projekty badawcze często angażują różne wydziały, uniwersytety i firmy, co również prowadzi do konieczności usunięcia kont po zakończeniu współpracy.

Najgorsza sytuacja to nagłe odejście pracownika w wyniku wykroczenia. Tego rodzaju wydarzenia zazwyczaj następują szybko, bez wcześniejszego ostrzeżenia, co pozostawia administratorowi niewiele czasu na właściwe działania, takie jak zablokowanie konta i usunięcie go z systemu, przy jednoczesnym zabezpieczeniu jego danych.

W naszym przykładzie przyjmiemy, że użytkownik, Eric, zrobił coś, co wymaga natychmiastowego usunięcia go z firmy. Nie jest tego świadomy, pracuje i jest zalogowany. Gdy tylko dasz znać ochronie, zostanie wyprowadzony z budynku.

Wszystko gotowe. Teraz cała uwaga jest skupiona na Tobie.

Sprawdzenie logowania

Na początek sprawdźmy, czy Eric jest rzeczywiście zalogowany i ile sesji aktywnych ma w tej chwili. Możemy użyć polecenia who, aby zobaczyć listę aktywnych sesji.

who

Eric jest zalogowany raz. Sprawdźmy teraz, jakie procesy są przez niego uruchamiane.

Przegląd procesów użytkownika

Możemy użyć polecenia ps, aby wyświetlić procesy uruchomione przez tego użytkownika. Opcja -u (użytkownik) pozwala nam ograniczyć wyjście do procesów działających na koncie użytkownika.

ps -u eric

Możemy uzyskać więcej szczegółowych informacji o tych procesach, używając polecenia top. Opcja -U (użytkownik) pozwala ograniczyć dane wyjściowe do procesów jednego użytkownika, pamiętaj, że tym razem jest to wielka litera „U”.

top -U eric

W ten sposób możemy zobaczyć zużycie pamięci oraz procesora dla każdego zadania i szybko sprawdzić, czy występują jakiekolwiek podejrzane aktywności. Planujemy zabić wszystkie jego procesy, dlatego warto poświęcić chwilę na przegląd procesów i upewnienie się, że usunięcie konta Ericha nie wpłynie negatywnie na innych użytkowników.

Wygląda na to, że nie wykonuje on żadnych skomplikowanych zadań, tylko przegląda pliki. Możemy więc przejść do kolejnych kroków. Zanim jednak zabijemy jego procesy, warto zablokować konto poprzez zablokowanie hasła.

Blokowanie konta

Blokujemy konto przed zabiciem procesów, ponieważ jeżeli zabijemy procesy, użytkownik zostanie wylogowany. Gdybyśmy zmienili jego hasło, nie miałby możliwości ponownego zalogowania się.

Zaszyfrowane hasła użytkowników są przechowywane w pliku /etc/shadow. Zwykle nie zajmowalibyśmy się szczegółami, ale aby zobaczyć, co dzieje się w pliku /etc/shadow po zablokowaniu konta, wykonamy pewne kroki. Możemy użyć następującego polecenia, aby zobaczyć pierwsze dwa pola wpisu dla konta użytkownika Eric.

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

Polecenie awk analizuje pola w plikach tekstowych i opcjonalnie je przetwarza. Używamy opcji -F (separator pól), aby wskazać awk, że plik wykorzystuje dwukropek jako separator. Szukamy linii zawierających „eric” i drukujemy pierwsze oraz drugie pole, które zawiera nazwę konta oraz zaszyfrowane hasło.

Wpis konta użytkownika Eric zostaje wyświetlony.

Aby zablokować konto, użyjemy polecenia passwd z opcją -l (lock), podając nazwę konta użytkownika, które chcemy zablokować.

sudo passwd -l eric

Jeśli teraz sprawdzimy plik /etc/shadow, zobaczymy, co się zmieniło.

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

Na początku zaszyfrowanego hasła dodano wykrzyknik. Nie zastępuje to pierwszego znaku, lecz jest dodane na początku hasła. To wystarcza, aby użytkownik nie mógł się zalogować na to konto.

Teraz, gdy zablokowaliśmy możliwość ponownego zalogowania się, możemy przejść do zabicia jego procesów i wylogowania go.

Zabijanie procesów

Są różne metody zabijania procesów użytkownika, jednak polecenie, które zaprezentujemy, jest szeroko dostępne i bardziej nowoczesne niż niektóre alternatywy. Polecenie pkill znajdzie i zabije procesy. Użyjemy sygnału KILL oraz opcji -u (użytkownik).

sudo pkill -KILL -u eric

Wracasz do wiersza poleceń w sposób zdecydowanie antyklimatyczny. Aby upewnić się, że procesy zostały zatrzymane, sprawdźmy ponownie, kto jest zalogowany:

who

Jego sesja została zakończona. Eric został wylogowany, a jego procesy zatrzymane. Sytuacja stała się nieco mniej napięta. Teraz możemy się zrelaksować i kontynuować porządki, gdy ochrona podejdzie do biurka Erica.

Archiwizacja katalogu domowego użytkownika

W takich sytuacjach może okazać się, że dostęp do plików użytkownika będzie potrzebny w przyszłości. Może to być związane z dochodzeniem lub po prostu z koniecznością odniesienia się do prac poprzednika. Użyjemy polecenia tar, aby zarchiwizować cały katalog domowy.

Używane przez nas opcje to:

  • c: Tworzenie archiwum.
  • f: Użycie określonej nazwy pliku dla archiwum.
  • j: Użycie kompresji bzip2.
  • v: Wyświetlanie szczegółowych informacji podczas tworzenia archiwum.
sudo tar cfjv eric-20200820.tar.bz /home/eric

Na ekranie terminala przewinie się wiele informacji. Aby sprawdzić, czy archiwum zostało utworzone, użyj polecenia ls z opcjami -l (długi format) oraz -h (czytelny format).

ls -lh eric-20200820.tar.bz

Utworzono plik o rozmiarze 722 MB. Można go skopiować w bezpieczne miejsce na późniejsze przeglądanie.

Usuwanie zadań cron

Sprawdźmy, czy na koncie użytkownika Eric zaplanowane są jakieś zadania cron. Zadania cron to polecenia uruchamiane w określonych odstępach czasu. Możemy to sprawdzić przy pomocy polecenia ls:

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

Jeżeli w tej lokalizacji istnieją jakiekolwiek pliki, oznacza to, że dla tego użytkownika są zaplanowane zadania cron. Możemy je usunąć, korzystając z polecenia crontab. Opcja -r (usuń) pozwoli na usunięcie zadań, a opcja -u (użytkownik) wskaże, dla którego użytkownika chcemy to zrobić.

sudo crontab -r -u eric

Zadania zostały usunięte. Warto zaznaczyć, że jeśli Eric podejrzewałby, że ma zostać usunięty, mógłby zaplanować jakieś złośliwe zadania. Dlatego ten krok jest najlepszą praktyką.

Usuwanie zadań drukowania

Możliwe, że użytkownik miał oczekujące zadania w kolejce drukowania. Dla pewności możemy wyczyścić kolejkę drukowania wszelkich zadań związanych z kontem użytkownika Eric. Polecenie lprm usuwa zadania z kolejki drukowania. Opcja -U (nazwa użytkownika) pozwoli na usunięcie zadań przypisanych do danego użytkownika:

lprm -U eric

Zadania zostały usunięte i wracasz do wiersza poleceń.

Usunięcie konta użytkownika

Utworzyliśmy już kopię zapasową plików z katalogu /home/eric/, więc możemy przystąpić do usunięcia konta użytkownika oraz samego katalogu /home/eric/.

Polecenie, które należy użyć, zależy od dystrybucji Linuksa, której używasz. Dla dystrybucji opartych na Debianie poleceniem jest deluser, a dla pozostałych dystrybucji Linuksa będzie to userdel.

W systemie Ubuntu dostępne są oba polecenia. Choć można się spodziewać, że jedno będzie aliasem dla drugiego, w rzeczywistości są to odrębne pliki binarne.

type deluser
type userdel

Choć oba polecenia są dostępne, zaleca się korzystanie z deluser w dystrybucjach opartych na Debianie:

„Userdel to narzędzie niskiego poziomu do usuwania użytkowników. W Debianie administratorzy powinni zwykle korzystać z deluser (8).”

To dość jasne, więc polecenie, którego użyjemy na tym komputerze z Ubuntu, to deluser. Mając na uwadze, że chcemy również usunąć katalog domowy, użyjemy flagi –remove-home:

sudo deluser --remove-home eric

Dla dystrybucji innych niż Debian polecenie to będzie userdel z flagą –remove:

sudo userdel --remove eric

Wszystkie ślady konta użytkownika Eric zostały usunięte. Możemy teraz sprawdzić, czy katalog /home/eric/ został usunięty:

ls /home

Grupa Eric została również usunięta, ponieważ konto użytkownika było jedynym wpisem w tej grupie. Możemy to łatwo sprawdzić, przeszukując plik /etc/group przy użyciu grepa:

sudo less /etc/group | grep eric

Podsumowanie

Eric został usunięty z systemu za swoje działania. Ochrona wciąż wyprowadza go z budynku, a Ty zabezpieczyłeś i zarchiwizowałeś jego pliki, usunąłeś konto i oczyściłeś system z wszelkich pozostałości.

Dokładność jest zawsze ważniejsza niż prędkość. Upewnij się, że dokładnie przemyślałeś każdy krok przed jego wykonaniem. Nie chcesz, aby ktoś podszedł do Ciebie i powiedział: „Nie, ten drugi Eric”.