Skip to main content
  1. Comandi/

User Management - gestione utenti e gruppi

·6 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

Cosa fa
#

Insieme di comandi per amministrare il ciclo di vita di utenti e gruppi sul sistema. Ogni modifica aggiorna /etc/passwd, /etc/group e /etc/shadow in modo coordinato.


TL;DR
#

sudo adduser mario           # crea utente mario con home e password
sudo usermod -aG sudo mario  # aggiungi mario al gruppo sudo
sudo userdel -r mario        # elimina mario e la sua home
sudo passwd mario            # cambia la password di mario
sudo chown mario:mario file  # cambia proprietario del file
lastlog                      # mostra ultimo login di tutti gli utenti

Creazione e modifica utenti
#

ComandoCosa faNote
sudo adduser nomeCrea utente interattivoCrea home, chiede password — preferito su Debian/Ubuntu
sudo useradd nomeCrea utente non interattivoNon crea home automaticamente — richiede flag aggiuntivi
sudo useradd -m -s /bin/bash nomeCrea utente con home e shell-m = crea home, -s = shell specifica
sudo usermod -aG gruppo utenteAggiunge utente a gruppo-a = append — OBBLIGATORIO, senza sovrascrive i gruppi
sudo usermod -s /bin/bash utenteCambia shell dell'utenteModifica il settimo campo in /etc/passwd
sudo usermod -L utenteBlocca l'accountLock — aggiunge ! all'hash in /etc/shadow
sudo usermod -U utenteSblocca l'accountUnlock — rimuove il !
sudo userdel utenteElimina utenteLa home rimane sul disco
sudo userdel -r utenteElimina utente e home-r = remove — cancella home e mail spool
sudo passwd utenteCambia passwordSenza argomento cambia la tua

Gestione gruppi
#

ComandoCosa faNote
sudo groupadd nomeCrea nuovo gruppo
sudo groupdel nomeElimina gruppoFallisce se e' il gruppo primario di un utente
sudo groupmod -n nuovo vecchioRinomina gruppo
getent group nomeMostra membri del gruppoAlternativa a cat /etc/group
id utenteMostra UID, GID e gruppiRapido per verificare appartenenze

Cambio proprietario file
#

ComandoCosa faEsempio
sudo chown utente fileCambia proprietariosudo chown mario file.txt
sudo chown utente:gruppo fileCambia proprietario e grupposudo chown mario:devs file.txt
sudo chown :gruppo fileCambia solo il grupposudo chown :devs file.txt
sudo chown -R utente:gruppo dir/Ricorsivo su directory-R = recursive
sudo chgrp gruppo fileCambia solo il gruppoEquivalente a chown :gruppo

Ispezione e audit
#

ComandoCosa faNote Blue Team
lastlogUltimo login di tutti gli utentiUtenti che non si sono mai loggati mostrano "Never logged in"
lastlog -u utenteUltimo login di un utente specifico-u = user
lastLista login recenti (wtmp)Include login, logout e riavvii
last utenteLogin recenti di un utente
sudo lastbLogin falliti (btmp)Richiede sudo — file /var/log/btmp
id utenteUID, GID, gruppiVerifica rapida appartenenze
getent passwd utenteInfo complete dall'accountMostra tutti i 7 campi

adduser vs useradd — la differenza
#

# adduser — script interattivo (Debian/Ubuntu)
sudo adduser mario
# Fa tutto: crea home /home/mario, chiede nome completo,
# chiede password, crea gruppo mario automaticamente

# useradd — comando POSIX di basso livello
sudo useradd mario
# NON crea home, NON imposta password, NON chiede nulla
# Devi aggiungere -m -s /bin/bash e poi passwd

# Regola pratica: usa adduser quando sei su Ubuntu/Kali
# Usa useradd negli script (controllo totale)

Refresh dei privilegi dopo usermod
#

Quando aggiungi un utente a un gruppo con usermod -aG, la modifica e' nel database ma la sessione corrente dell'utente non si aggiorna — e' come una fotografia scattata al login che non cambia.

Per applicare immediatamente senza logout:

su - nomeutente    # se hai sudo
newgrp nomegruppo  # cambia gruppo primario nella sessione corrente

Se l'utente non ha sudo, deve fare logout e login.

su - Switch User
  • su nome_utente - cambi utente ma mantieni buona parte dell’ambiente del chiamante: variabili d’ambiente, PATH in parte ereditato, working directory invariata, ecc. È come dire “esegui una shell come quell’utente, ma dentro il mio contesto attuale”.
    • su - nome_utente (o su -l nome_utente)
      • avvii una login shell “pulita” per quell’utente, come se avesse fatto login da zero: vengono caricati i suoi file di configurazione di login (.profile, .bash_profile, ecc.), viene impostata la sua HOME come directory corrente, PATH e altre variabili vengono settate come previsto per quell’utente. È il modo “corretto” per impersonarlo davvero.

/etc/shadow — formato password
#

sudo less /etc/shadow

# Formato di una riga:
# utente:$id$salt$hash:ultimocambio:minimo:massimo:avviso:inattivo:scadenza
#
# Il campo password:
# $6$   = SHA-512 (standard moderno)
# $5$   = SHA-256
# $y$   = yescrypt (Ubuntu/Kali recenti)
# $1$   = MD5 (vecchio, insicuro)
# !     = account bloccato (usermod -L)
# *     = account senza password (utenti di sistema)
#
# Esempio:
# barno:$y$j9T$abc123salt$hash_lungo:19800:0:99999:7:::
#         ^
#         yescrypt — sistema moderno
Important

Il salt e' casuale per ogni utente. Due utenti con la stessa password hanno hash completamente diversi. Questo blocca i rainbow table attack — non puoi precomputare gli hash perche' non conosci il salt.


/etc/group — struttura
#

cat /etc/group | grep -i barno

# Formato:
# nome_gruppo:x:GID:lista_membri
#
# barno:x:1000:         <- barno e' il PROPRIETARIO del gruppo barno
# kaboxer:x:130:barno   <- barno e' MEMBRO del gruppo kaboxer
#
# Il quarto campo e' la lista dei membri aggiuntivi.
# Se sei il proprietario (primary group), il tuo nome non si ripete nel quarto campo.

Scenario Reale
#

# ATTACCO — creazione backdoor utente
# Un attaccante con accesso root crea un utente nascosto:
sudo useradd -m -u 0 -o -g 0 -s /bin/bash backdoor
# -u 0 = UID 0 (root) anche se il nome e' diverso
# -o = permette UID duplicato

# DIFESA — rilevamento utenti con UID 0 non autorizzati
awk -F: '$3 == 0 {print $1}' /etc/passwd
# Dovrebbe restituire SOLO "root" — qualsiasi altro nome e' anomalo

# Verifica utenti creati di recente (modifiche a /etc/passwd):
ls -la /etc/passwd   # controlla timestamp
# oppure con auditd (mese 4+)
Warning

usermod -aG — il flag -a (append) e' critico. Senza -a, -G sovrascrive tutti i gruppi dell'utente con solo quelli specificati. Un sudo usermod -G docker mario rimuoverebbe mario da sudo, wheel e tutti gli altri gruppi.


Orphaned File — file senza utente
#

Durante un'analisi forense trovi un file in /tmp con UID 1005 ma getent passwd 1005 non restituisce nulla. Sei davanti a un orphaned file — residuo di un utente eliminato o tentativo di un attaccante di creare file con ID non mappati per evadere il monitoraggio standard.

# Trova tutti i file orphaned (UID senza utente corrispondente)
find / -nouser 2>/dev/null
find / -nogroup 2>/dev/null

Collegato a
#

Related