Tutoriel Linux

Userdel in Linux: eliminare un account senza eliminare la directory home errata

Débutant4 min de lecture

È necessario rimuovere un vecchio account tecnico o ripulire un account utente locale non più necessario. Il comando userdel sembra semplice, ma la sua opzione -R Può eliminare la cartella personale insieme ai relativi dati. Un errore nel nome dell’account o una directory home insolita sono sufficienti per eliminare la cartella sbagliata.

Consiglio di separare l’eliminazione dell’account dall’eliminazione dei file. Iniziate annotando l’UID, la directory home, i gruppi, le sessioni e i processi. Quindi decidete se i dati devono essere archiviati, trasferiti o eliminati. Questo metodo richiede pochi minuti ed evita la perdita irreversibile dei dati.

Prima di utilizzare userdel, verificare quale account e quale cartella personale verranno eliminati.

Conferma l’account locale e il file personale

Alice Utilizzando le credenziali di accesso corrette. Innanzitutto, verifica l’account con più fonti:

getent passwd alice
grep '^alice:' /etc/passwd

getent può restituire un account da LDAP, SSSD o un’altra directory. Se l’utente appare con getent ma non dentro /etc/passwdnon avviare userdel Alla cieca: elabora l’account nella directory che lo gestisce. La guida per elenca gli utenti Linux questo dettaglio illustra la differenza tra i conti locali e i conti forniti da NSS.

Successivamente, salva l’UID e il percorso home nella tua sessione di amministrazione:


home=$(getent passwd alice | cut -d: -f6)

id -nG alice
sudo ls -ld "$home"

Rivedi l’output prima di continuare. Un account di servizio può avere una directory home. , o una directory condivisa. Non affidarti solo al prefisso. /casaVerifica inoltre di non eliminare il tuo account SSH o un account utilizzato da un’applicazione.

Gestisci sessioni, processi e attività programmate

Chi
w
loginctl list-sessions
pgrep -a -u alice
ps -u alice -o pid,ppid,lstart,cmd

Se trovi un processo aziendale, identifica il servizio corrispondente e trasferisci la sua configurazione a un account tecnico prima di eliminarlo. uccidi -9 Questa non è una procedura per la cessazione del rapporto di lavoro di un dipendente. L’articolo su uccidere su Linux Spiega come richiedere una fermata senza ostacoli e come leggere i giornali prima di forzare il blocco.

Verifica anche le unità crontab e systemd che fanno riferimento a questo login:

sudo crontab -u alice -l
[:space:]sudo grep -R --line-number '^[]*User=alice[]*$' /etc/systemd/system /usr/lib/systemd/system 2>/dev/null[:space:]

L’impostazione Comando_utente In /etc/login.defs Può avviare uno script per ripulire i processi cron, at o print, ma non è lo stesso su tutte le distribuzioni. conferma che il risultato di questo script non viene preso in considerazione da userdelPertanto, salva o elimina le attività esplicitamente prima dell’account.

Per sospendere temporaneamente l’autenticazione tramite password durante i controlli:

sudo passwd -l alice

Questo blocco non chiude le sessioni attive e non blocca necessariamente le chiavi SSH. Controlla questi punti di accesso separatamente. La guida su password in Linux dettaglia questo limite.

Prima di accedere alla pagina iniziale, controlla i file dell’account.

La cartella home dell’utente non è l’unico posto in cui un utente può memorizzare i file. Cerca il suo UID nelle posizioni utilizzate dal server:

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

Regola i punti di partenza in base ai tuoi volumi. L’opzione -xdev impedisce a ogni ricerca di attraversare un altro filesystem; pertanto, ripetere il comando sui mount dei dati interessati. Evitare un Trovare / improvvisato su un server di produzione o su una memoria di rete molto grande.

Se è necessario conservare i dati, verifica lo spazio disponibile e quindi crea un archivio della directory 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

Scegli se mantenere la directory home o eliminarla.

L’ordine senza -R Rimuove l’account dai file di sistema, ma ne conserva la cartella personale:

sudo userdel alice

Questa è la mia scelta predefinita quando i dati non sono ancora stati convalidati dal proprietario o trasferiti a un altro account. Puoi eliminare la directory in seguito, dopo averla esaminata.

Se la casella postale domestica e quella locale devono davvero scomparire, utilizzare:

sudo userdel -r alice

Secondo il pagina man di userdel, -R

Non utilizzare userdel -f per ignorare un messaggio che indica processi attivi. Questa opzione ignora i controlli di sicurezza e potrebbe lasciare il sistema in uno stato incoerente. Torna a pgrepIndividua il servizio in questione, arrestalo correttamente, quindi riavvia il processo di eliminazione.

Controlla cosa rimane dopo l’eliminazione utente

Mantieni la stessa sessione della shell per preservare le variabili $uido E $casaQuindi controlla il risultato:

getent passwd alice || echo "Account non disponibile"
id Alice
pgrep -a -u "$uid"
test -e "$home" && sudo ls -ld "$home" || echo "Cartella personale mancante"
sudo find /home /srv /var/www -xdev -uid "$uid" -ls

Questo dovrebbe indicare che l’accesso non esiste più. Se i file rimangono con il vecchio UID, decidere cartella per cartella se devono essere archiviati, riassegnati o eliminati. Non applicare un globale senza conoscere il ruolo dei dati.

Infine, prima di eliminare i file, verifica i gruppi, le configurazioni di systemd, le chiavi SSH copiate altrove e le attività pianificate. L’UID potrebbe essere riutilizzato da un nuovo account in futuro: lasciare i file orfani senza una soluzione crea un problema di permessi difficile da individuare.