Tutoriel Linux

Utenti Linux: comandi utili per elencare gli account e identificare gli accessi

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.

Quando si prende il controllo di un server Linux, la prima domanda non è sempre “chi è connesso ora?”. La vera domanda è spesso: quali conti esistono ancoraquali possono accedere e quali dispongono di diritti sensibili.

Illustrazione di Tux davanti a un server con account utente, una lente d'ingrandimento e lucchetti di sicurezza.
L’elenco degli account Linux aiuta a identificare gli accessi umani, i gruppi sensibili e le chiavi SSH dimenticate.

In questa guida, elencheremo gli utenti in modo ordinato, senza panico. /etc/passwdQuindi, individua gli account che devono essere controllati per primi. Lascia che te lo dica subito: non cancellare nulla solo perché un nome sembra strano. Su Linux, molti account sono dedicati ai servizi.

Leggere il file /etc/passwd senza confondere l’account di sistema con l’account dell’utente.

Il dossier /etc/passwd Elenca gli account noti localmente. Non contiene le password in chiaro, ma fornisce informazioni utili: nome account, UID, GID, directory home e shell.

cat /etc/passwd

Una linea si presenta così:

nathan:x:1000:1000:Nathan Martin:/home/nathan:/bin/bash

I campi sono separati da due punti. Per una prima occhiata, concentrati su nome, UID, directory home e shell:

taglia -d: -f1,3,6,7 /etc/passwd

In molte distribuzioni, gli account utente iniziano con l’UID. milleGli account di sistema spesso hanno un UID inferiore o una shell come /usr/sbin/nologin O /bin/falseQuesta non è una regola universale, ma è un buon primo filtro.

awk -F: '$3 >= 1000 && $3 < 60000 {print $1, $3, $6, $7}' /etc/passwd

La pagina di manuale di passwd(5) Descrive in dettaglio il formato esatto del file. Tienilo a portata di mano se devi controllare un server obsoleto o una distribuzione insolita.

Preferisci getent quando gli account non sono solo locali

In una posizione semplice, /etc/passwd Spesso questo è sufficiente. Su un server integrato con LDAP, Active Directory, SSSD o un'altra directory, potrebbe essere incompleto. In tal caso, utilizzare getentche interroga i database configurati dal sistema.

ottenere la password

Per controllare un conto specifico:

getent passwd nathan

E per generare un elenco più leggibile di account con UID utente:

getent passwd | awk -F: '$3 >= 1000 && $3 < 60000 {print $1, $3, $6, $7}'

Preferisco questo metodo sui computer aziendali perché evita di presumere che un account non esista semplicemente perché non è scritto nel file locale. Il comando è documentato in getent(1).

Verifica i gruppi sensibili e le autorizzazioni.

Elencare gli account è una buona cosa. Sapere quali possono causare danni è meglio. Inizia con un utente specifico con id :

id nathan
gruppi nathan

Vedrai l'UID, il gruppo primario e i gruppi secondari. I gruppi da esaminare attentamente dipendono dalla distribuzione, ma sudo, ruota, amm, finestra mobile oppure determinati gruppi di applicazioni possono fornire molto più del semplice accesso utente.

gruppo getent sudo
ruota del gruppo getent
getent group docker
amministratore del gruppo getent

Se un account appare in sudo O ruotaControlla anche la configurazione di sudoers. Un account vecchio e dimenticato con accesso amministratore è proprio il tipo di dettaglio che ti si ritorcerà contro in seguito. Su questo punto, la nostra guida per Padroneggiare sudo in Linux Questo controllo iniziale è un buon complemento.

Ordini id(1) E gruppi(1) Rimangono semplici, ma forniscono rapidamente un'idea della reale portata di un resoconto.

Identifica gli account che possono accedere

Non tutti gli account elencati sono utilizzabili per l'accesso. Per isolare quelli con una shell interattiva attiva, è possibile filtrare le shell:

getent passwd | grep -E '/bin/(bash|sh|zsh|pesce)$'

Questo filtro non è perfetto, ma fornisce un elenco iniziale da esaminare. Successivamente, verifica se gli account dispongono di una cartella personale:

getent passwd | awk -F: '$6 ~ /^/home/ {print $1, $6, $7}'
ls -1 /home

Se stai eseguendo un controllo su un server esposto tramite SSH, verifica anche le chiavi presenti nelle directory utente:

sudo find /home -maxdepth 3 -path '*/.ssh/authorized_keys' -type f -ls

Una chiave SSH nell'account sbagliato può essere sufficiente per mantenere l'accesso. Se devi ripulire le impostazioni di autenticazione, rileggi anche il nostro articolo su generazione di una chiave SSH su Ubuntu.

Verifica gli ultimi collegamenti senza trarre conclusioni affrettate.

Per vedere chi è online in questo momento:

Chi
w

Per la storia recente:

ultimo -a | testa
sudo lastlog | head -30

lastlog Questo potrebbe indicare che non è mai stato effettuato l'accesso a un account, ma non è sufficiente a dimostrare che sia inutilizzabile. Un account potrebbe essere utilizzato per un servizio, un'attività pianificata, un'applicazione oppure potrebbe essere stato creato per una procedura di backup. Utilizza questi comandi come segnali, non come una decisione automatica. La pagina ultimo log(8) specifica le opzioni disponibili.

Se stai cercando un'anomalia dopo una connessione sospetta, integra questa analisi con i log di sistema:

sudo journalctl -u ssh -b
sudo journalctl -p warning..alert -b

La nostra guida a journalctl e i log dell'ultimo avvio può aiutare a inquadrare questa parte senza cercare a caso.

La piccola lista di controllo che userei prima di pulire

  • Slug esatto dell'account Annota il nome, l'UID, la directory home e la shell.
  • Gruppi sensibili : controllo sudo, ruota, finestra mobile, amm e gruppi di applicazioni.
  • Accesso SSH : cerca file chiavi_autorizzate e conservate una copia prima di apportare qualsiasi modifica.
  • Ultima attività : attraverso scorso, lastlog e i giornali, senza rimuoverli sulla base di un singolo indizio.
  • Servizio correlato : verificare se l'account appartiene a un servizio o a un'applicazione prima di disabilitarlo.

Se un account sembra davvero superfluo, iniziate bloccandolo o disabilitandone l'accesso, non eliminando la cartella. Su un server, preferisco sempre monitorare i servizi, testarli e solo dopo procedere alla pulizia. È una soluzione meno drastica, ma evita che un'applicazione si blocchi perché un account "sconosciuto" veniva utilizzato quotidianamente.

sudo passwd -l vecchio_account
sudo systemctl --failed
sudo journalctl -p warning..alert -b

Dopo questo controllo, avrai una visione molto più chiara: account umani, account di sistema, diritti di amministratore, accesso SSH e attività recenti. Per collegare questo controllo ai servizi attivi, puoi quindi utilizzare l'elenco dei servizi systemctl e vedere cosa è effettivamente in esecuzione sulla macchina.

sudo apt update && sudo apt upgrade