Tutoriel Linux

Userdel w systemie Linux: usuwanie konta bez usuwania niewłaściwego katalogu domowego

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Musisz usunąć stare konto technika lub wyczyścić lokalne konto użytkownika, które nie jest już potrzebne. Polecenie użytkownikdel wydaje się proste, ale jego opcja -R Może usunąć folder osobisty wraz z danymi. Błąd w nazwie konta lub nietypowy katalog domowy wystarczy, aby usunąć niewłaściwy folder.

Zalecam oddzielenie usuwania konta od usuwania pliku. Zacznij od zanotowania UID, katalogu domowego, grup, sesji i procesów. Następnie zdecyduj, czy dane mają zostać zarchiwizowane, przeniesione, czy usunięte. Ta metoda zajmuje kilka minut i pozwala uniknąć nieodwracalnej utraty danych.

Tux sprawdza konto i folder osobisty, które mają zostać usunięte, używając polecenia userdel w systemie Linux
Przed użyciem userdel sprawdź, które konto i folder osobisty zostaną usunięte.

Potwierdź konto lokalne i plik osobisty

W poniższych przykładach zastąp Alicja Używając poprawnego loginu. Najpierw zweryfikuj konto w kilku źródłach:

pobierz hasło alice
grep '^alice:' /etc/passwd
mam Alicję

getenta może zwrócić konto z LDAP, SSSD lub innego katalogu. Jeśli użytkownik pojawia się z getenta ale nie w /etc/passwdnie uruchamiaj użytkownikdel Bezmyślnie: przetwarzaj konto w katalogu, który nim zarządza. Przewodnik dla lista użytkowników Linuksa szczegółowo opisuje różnicę pomiędzy kontami lokalnymi i kontami udostępnianymi przez NSS.

Następnie zapisz UID i ścieżkę domową w sesji administracyjnej:

uid=$(id -u alicja)
home=$(getent passwd alice | cut -d: -f6)
echo "UID=$uid HOME=$home"

sudo ls -ld "$home"

Przed kontynuowaniem sprawdź wynik. Konto usługi może mieć katalog domowy. /var/lib, /srv lub współdzielony katalog. Nie polegaj wyłącznie na prefiksie. /dom

Kontroluj sesje, procesy i zaplanowane zadania

Konto, które nie jest widoczne na ekranie logowania, może nadal uruchamiać usługę, kopię zapasową lub zadanie cron. Sprawdź sesje i procesy przed ich zatrzymaniem:

Kto
w
lista sesji loginctl

ps -u Alicja -o pid, ppid, lstart, cmd

Jeśli znajdziesz proces biznesowy, zidentyfikuj jego usługę i przenieś jego konfigurację na konto techniczne, zanim go usuniesz. zabij -9 To nie jest procedura dotycząca odejścia pracownika. Artykuł na ten temat zabić na Linuksie wyjaśnia, jak poprosić o czyste zatrzymanie i przeczytać gazety przed przejechaniem.

Sprawdź również jednostki crontab i systemd, które odwołują się do tego logowania:

sudo crontab -u alice -l
[:space:][:space:]

Konfiguracja USERDEL_CMD W /etc/login.defs Może uruchomić skrypt czyszczący zadania cron, at lub print, ale nie działa tak samo we wszystkich dystrybucjach. Dokumentacja login.defs potwierdza, że ​​wynik tego skryptu nie jest brany pod uwagę przez użytkownikdelDlatego zapisuj i usuwaj zadania jawnie przed kontem.

sudo passwd -l alice

Ta blokada nie zamyka aktywnych sesji i niekoniecznie blokuje klucze SSH. Sprawdź te punkty dostępu osobno. Przewodnik po passwd w systemie Linux szczegółowo opisuje ten limit.

Przed dotknięciem strony głównej przeszukaj pliki konta.

sudo find /home /srv /var/www -xdev -uid "$uid" -print

Dostosuj punkty początkowe do swoich głośności. Opcja -xdev zapobiega przechodzeniu każdego wyszukiwania do innego systemu plików; dlatego należy powtórzyć polecenie w odpowiednich miejscach montowania danych. Unikaj znajdować /

Jeśli dane muszą zostać zachowane, sprawdź dostępną przestrzeń, a następnie utwórz archiwum katalogu domowego:

df -h /root "$home"
sudo du -sh "$home"
sudo tar --one-file-system -C "$(dirname "$home")" -czf "/root/alice-home-$(date +%F).tar.gz" "$(basename "$home")"
sudo tar -tzf "/root/alice-home-$(date +%F).tar.gz" | head

Czytelna lista archiwów nie zastąpi przetestowanego przywracania. W przypadku ważnego katalogu domowego użyj swojej zwykłej kopii zapasowej lub migawki, a następnie przetestuj kilka przywróconych plików w innej lokalizacji.

Wybierz pomiędzy zachowaniem katalogu domowego a jego usunięciem.

Zamówienie bez -R usuwa konto z plików systemowych, ale zachowuje jego folder osobisty:

sudo userdel alice

To mój domyślny wybór, gdy dane nie zostały jeszcze zweryfikowane przez właściciela lub przeniesione na inne konto. Możesz usunąć katalog później, po sprawdzeniu.

Jeśli skrzynka pocztowa w domu i okolicy naprawdę musi zniknąć, użyj:

Według strona podręcznika użytkownika userdel, Usuwa foldery domowe i pocztowe, ale nie pliki należące do użytkownika w innych systemach plików. Dlatego to polecenie nie zastępuje inwentaryzacji przeprowadzonej przy użyciu UID.

Nie używać użytkownikdel -f aby pominąć komunikat informujący o aktywnych procesach. Ta opcja ignoruje kontrole bezpieczeństwa i może pozostawić system w niespójnym stanie. Powrót do pgrepZidentyfikuj usługę, której dotyczy problem, zamknij ją prawidłowo, a następnie ponownie uruchom proces usuwania.

Sprawdź, co pozostaje po usunięciu użytkownika

Zachowaj tę samą sesję powłoki, aby zachować zmienne $uid I $domNastępnie sprawdź wynik:

getent passwd alice || echo "Konto niedostępne"
mam Alicję
pgrep -a -u "$uid"
test -e "$home" && sudo ls -ld "$home" || echo "Brak folderu osobistego"
sudo find /home /srv /var/www -xdev -uid "$uid" -ls

mam Alicję Powinno to oznaczać, że dane logowanie już nie istnieje. Jeśli pliki pozostają ze starym UID, zdecyduj folder po folderze, czy mają zostać zarchiwizowane, ponownie przypisane, czy usunięte. Nie stosuj chown -R globalny bez znajomości roli danych.

Na koniec sprawdź grupy, konfiguracje systemd, klucze SSH skopiowane z innego miejsca oraz zaplanowane zadania przed usunięciem. Identyfikator UID może zostać ponownie użyty przez nowe konto w przyszłości: pozostawienie osieroconych plików bez rozwiązania problemu z uprawnieniami jest trudne do wykrycia.

sudo apt update && sudo apt upgrade