Introduzione

id è un'utilità della riga di comando che stampa gli ID utente e gruppo reali ed efficaci.

Sintassi del comando id

La sintassi per il comando id è la seguente:

id [OPTIONS] [USERNAME]

Se il nome utente viene omesso, il comando id visualizza informazioni sull'utente attualmente connesso.

Se richiamato senza alcuna opzione, id stampa l'ID utente reale (uid), l'ID gruppo primario reale dell'utente (gid) e gli ID reali dei gruppi supplementari (groups) a cui appartiene l'utente. L'ID utente effettivo, l'ID gruppo e gli ID gruppo supplementari vengono stampati solo quando sono diversi da quelli reali.

id
uid=1000(noviello) gid=1000(noviello) groups=1000(noviello),4(adm),27(sudo),998(docker)

Se SELinux è abilitato, id stampa anche il contesto di sicurezza dell'utente (context):

uid=1000(noviello) gid=1000(noviello) groups=1000(noviello) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Per ottenere informazioni su un altro utente, passare il nome utente o l'ID utente come argomento al comando id:

id alice
uid=1000(alice) gid=1000(alice) groups=1000(alice)

Nel caso in cui un utente con un nome uguale all'ID fornito esista sul sistema, la ricerca del nome ha la precedenza. Quando si utilizza l'ID utente come argomento, anteporre l'ID con il simbolo + per evitare di interpretare l'ID come nome.

Ad esempio, se si dispone di un utente con nome 1010 e di un altro utente con ID 1010, se si digita il comando id 1010 verranno visualizzate le informazioni sull'utente con nome 1010. Per ottenere informazioni sull'utente con ID 1010, digitare id +1010.

Opzioni del comando id

Il comando id accetta diverse opzioni che consentono di visualizzare solo informazioni specifiche. Questo è utile quando si usa id negli gli script di shell.

Per stampare solo l'ID utente effettivo, utilizzare l'opzione -u(--user):

id -u 
1000

L'opzione -g(--group) indica a id di stampare solo l'ID gruppo effettivo:

id -g
1000 4 27 998

Utilizzare l'opzione -G(--groups) per stampare gli ID effettivi di tutti i gruppi a cui appartiene l'utente:

id -G
1000

Per stampare nomi anziché numeri, utilizzare l'opzione -n, --name. Questa opzione può essere utilizzata solo in combinazione con -u, -g e -G.

id -un
noviello

L'esecuzione del comando id con le opzioni -un produce lo stesso output di whoami e l'output di id -Gn è equivalente all'output del comando groups.

L'opzione -r, (--real)  può essere utilizzata in combinazione con -u, -g e -G per stampare il vero, invece di valori effettivi:

id -ur

Per stampare solo il contesto di sicurezza del processo, che di solito è il contesto di sicurezza dell'utente, utilizzare l'opzione -Z(--context):

id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Se SELinux è disabilitato, id stampa un messaggio di errore:

id: --context (-Z) works only on an SELinux-enabled kernel

L'opzione -z(--zero) indica a id di delimitare gli elementi di output con il carattere NUL, non con gli spazi bianchi:

id -znG
novielloadmsudodocker

Ciò può essere utile quando si esegue il piping dell'output a un comando in grado di analizzare le nuove righe

Conclusione

Il comando id stampa informazioni su un determinato utente o l'utente attualmente connesso se non viene fornito alcun nome utente o ID come argomento.