Comando id: verificare UID e gruppi, whoami, groups e gruppi supplementari
Per verificare l'UID e i gruppi dell'account corrente su un server Linux si usa il comando id; se serve solo il nome dell'account si usa whoami, se servono solo i nomi dei gruppi si usa groups. Eseguendo i tre comandi uno dopo l'altro su server AlmaLinux 9 e Debian 12 e confrontando l'output, id -un e whoami hanno mostrato lo stesso nome di account, e groups ha mostrato l'elenco dei gruppi di id lasciando solo i nomi.
L'output qui sotto è stato ottenuto su un server AlmaLinux 9.8 con l'account root e su un server Debian 12 con un account normale. Il nome e i numeri dell'account di accesso e i gruppi supplementari sono stati sostituiti con valori di esempio (user1, 1000, adm, systemd-journal).
1️⃣ Uso di base del comando id
Eseguendo id senza opzioni, le informazioni dell'account che ha avviato la shell corrente compaiono su una riga. Con l'account root, tutti e tre i campi erano 0(root).
iduid=0(root) gid=0(root) groups=0(root)Il campo uid è il numero e il nome dell'account, e il campo gid è il numero e il nome del gruppo primario (primary group). Il campo groups contiene tutti i gruppi a cui l'account appartiene, con il gruppo primario al primo posto.
Scrivendo un nome di account dopo id vengono mostrate le informazioni di quell'account. Verificando l'account normale user1, che ha gruppi supplementari, nel campo groups dopo il gruppo primario user1 sono comparsi adm e systemd-journal. Questi gruppi a cui l'account appartiene oltre al gruppo primario sono i gruppi supplementari (supplementary group).
id user1uid=1000(user1) gid=1000(user1) groups=1000(user1),4(adm),190(systemd-journal)Molti account hanno lo stesso numero per UID e gid, quindi è facile considerare i due numeri come lo stesso valore, ma l'account adm presente di serie sul server aveva UID 3 e numero di gruppo primario 4. L'account operator aveva root come gruppo primario.
id admuid=3(adm) gid=4(adm) groups=4(adm)id operatoruid=11(operator) gid=0(root) groups=0(root)Scrivendo più account ne viene mostrato uno per riga.
id root binuid=0(root) gid=0(root) groups=0(root)
uid=1(bin) gid=1(bin) groups=1(bin)Scrivendo un account che non esiste compare l'errore [no such user], e il codice di uscita era 1.
id no-such-user9id: 'no-such-user9': no such userecho $?1Il codice di uscita quando si scrive un account esistente è 0, quindi in uno script si può usare come condizione per verificare se un account esiste.
2️⃣ Opzioni del comando id
Per passare a uno script un solo numero di tutto l'output, si sceglie un solo campo con un'opzione. -u mostra l'UID, -g il numero del gruppo primario e -G tutti i numeri dei gruppi a cui l'account appartiene.
id -u0id -u daemon2id -G user11000 4 190Aggiungendo -n compaiono i nomi al posto dei numeri. Verificando i gruppi di user1 con [id -Gn], i tre numeri sono diventati tre nomi.
id -Gn user1user1 adm systemd-journalid -gn user1user1-n e -r si usano insieme a una delle opzioni -u, -g e -G. Scrivendo solo -n è comparso l'errore qui sotto.
id -nid: cannot print only names or real IDs in default format-r mostra l'ID reale al posto dell'ID effettivo (effective). Eseguendo [id -ur] in una shell dell'account root è comparso 0. Scrivendo insieme due o più opzioni che scelgono un numero, come -u e -g, compare l'errore [cannot print "only" of more than one choice]. Le opzioni sono riassunte qui sotto.
| Opzione | Copia | Descrizione |
|---|---|---|
| -u--user | Mostra il numero dell'UID | |
| -g--group | Mostra il numero del gruppo primario | |
| -G--groups | Mostra tutti i numeri dei gruppi di appartenenza | |
| -n--name | Con -u, -g o -G, mostra il nome al posto del numero | |
| -r--real | Con -u, -g o -G, mostra l'ID reale al posto dell'ID effettivo |
| Opzione | Copia | Descrizione |
|---|---|---|
| -Z--context | Mostra solo il contesto di sicurezza del processo | |
| -z--zero | Separa gli elementi dell'output con caratteri NUL invece che con spazi; non utilizzabile nel formato predefinito | |
| -a | Accettata solo per compatibilità con altre versioni di id e ignorata | |
| --help | Mostra l'aiuto | |
| --version | Stampare la versione |
🔲 Simulatore del comando id
Il simulatore qui sotto parte con l'account user1, che ha gruppi supplementari. Dopo aver aggiunto il gruppo wheel con il chip [🖊 Other window], si possono confrontare [id] e [id user1] e verificare i gruppi di una nuova shell con il chip [🔁 Log in again].
3️⃣ Il comando whoami e id -un
Se serve solo il nome dell'account della shell corrente, si esegue whoami. La pagina di man descrive whoami come lo stesso comando di [id -un]. Eseguendo i due comandi con l'account root, entrambi hanno mostrato root.
whoamirootid -unrootAnche con un account normale sul server Debian 12 i due comandi hanno mostrato lo stesso nome di account.
whoamiuser1id -unuser1whoami mostra il nome dell'account che corrisponde all'UID effettivo (effective) corrente. È un comando che verifica solo l'account corrente, quindi aggiungendo dopo un nome di account compare un errore.
whoami user1whoami: extra operand 'user1'
Try 'whoami --help' for more information.Il nome o il numero di un altro account si verifica scrivendo quell'account dopo id.
id -un user1user1Scrivendo -u al posto di -un, nello stesso punto compare il numero dell'UID invece del nome dell'account.
4️⃣ Il comando groups e i gruppi supplementari
groups mostra solo i nomi dei gruppi su una riga. Senza nome di account compaiono i gruppi della shell corrente, e con l'account root c'era solo root.
groupsrootScrivendo un nome di account compaiono il nome dell'account e, dopo i due punti, i gruppi. Scrivendo più account ne è stato mostrato uno per riga.
groups user1 daemonuser1 : user1 adm systemd-journal
daemon : daemonIl gruppo primario e i gruppi supplementari vengono registrati in posti diversi. I gruppi supplementari sono scritti come membri nel quarto campo del database dei gruppi (/etc/group), mentre il gruppo primario è scritto come numero nel quarto campo delle informazioni dell'account (/etc/passwd).
getent group admadm:x:4:user1getent group user1user1:x:1000:getent passwd daemondaemon:x:2:2:daemon:/sbin:/sbin/nologinIl gruppo user1, gruppo primario di user1, aveva il quarto campo vuoto, e nel gruppo supplementare adm user1 era scritto come membro. Il 2 nel quarto campo della riga dell'account daemon è il numero del gruppo primario.
Per aggiungere un account a un gruppo supplementare si usa il comando usermod nella forma [usermod -aG gruppo account]. Usando solo -G senza -a, l'account esce dai gruppi supplementari esistenti non scritti nell'elenco, quindi -a va scritto insieme.
groups eseguito senza nome di account mostra i gruppi del processo della shell corrente. La pagina di man spiega che questo valore può essere diverso dal database quando il database dei gruppi cambia.
Per questo, subito dopo aver modificato i gruppi si verificano i gruppi del database con [groups account] o [id account], e per applicarli alla shell si accede di nuovo. Un comando che cambia l'ID di gruppo corrente restando connessi è newgrp.
🔢 FAQ & contenuti consigliati
Creare account
Linux: comando useradd & comando passwd
Comandi che creano un nuovo account utente e ne impostano la password.
Eliminare un account
[Linux] Comando userdel: eliminare gli account utente
Un comando che elimina un account utente inutilizzato e ripulisce anche la sua cartella home.
Scadenza della password
Comando chage di Linux
Un comando che verifica e modifica il periodo di validità e la data di scadenza della password di un account utente.
ℹ️ Informativa sull'affiliazione
I contenuti di questo sito includono link di affiliazione. Se un visitatore acquista un prodotto o un servizio tramite uno di questi link, il sito riceve una commissione dal venditore. In questo processo l'importo pagato dall'acquirente (durante le promozioni l'importo scende↓) non aumenta. Prezzi, sconti e disponibilità indicati si riferiscono al momento della stesura e possono differire da quelli reali: prima di acquistare verifica sempre presso il venditore. I prodotti vengono scelti e valutati secondo criteri propri, e le commissioni non influiscono sull'ordine di presentazione né sul contenuto delle valutazioni.