Group identifier
# Group identifier

Nei sistemi operativi Unix e Unix-like il group identifier o GID è un numero intero che identifica un gruppo di utenti del sistema.

## Assegnazione

Il group identifier viene assegnato dall'amministratore di sistema (root) insieme al nome del gruppo. Solo l'amministratore di sistema lo può modificare. L'associazione tra group identifier e nome del gruppo viene normalmente definita nel file /etc/group, ma può anche esistere in un server NIS+, o in un servizio di directory accessibile via LDAP.

Ad ogni utente del sistema viene assegnato un gruppo detto principale e zero o più gruppi (con un numero massimo dipendente dal sistema) detti supplementari. L'associazione tra utente e gruppo principale è normalmente esplicitata nel file /etc/passwd, mentre le associazioni tra utenti e gruppi supplementari sono normalmente esplicitate nel file /etc/group.

L'idea di gruppi supplementari venne introdotta nel 1983 con 4.2BSD, il quale permetteva ad un utente di far parte di fino a 16 gruppi supplementari contemporaneamente. Per contro, essi non erano previsti in UNIX System V, ma tramite il comando newgrp un utente poteva invece avviare una nuova shell testuale attribuendosi un diverso gruppo principale, con modalità analoghe a quelle del comando su. Oggi i due aspetti sono unificati nella Single UNIX Specification.

## Utilizzo

Ad ogni file e directory del file system è assegnato esattamente un group identifier che ne indica il gruppo d'appartenenza e contribuisce a determinarne i permessi d'accesso. Può essere modificato tramite i comandi chown e chgrp.

Ad ogni processo è associata una serie di group identifier (vedi Process control block (Unix)) che contribuiscono a determinare i permessi che il processo ha su file e directory. Processi con adeguati privilegi possono modificare i propri group identifier associati tramite apposite chiamate di sistema come setgid, setegid, setregid, setresgid e setgroups.

## Group identifier particolari

Il group identifier 0 è particolare in quanto identifica il gruppo del superuser (root).

I group identifier da 1 a 99 (o fino anche a 499 o 999 su certi sistemi) sono comunemente riservati e vengono usati dal sistema per separare e limitare la possibilità d'intervento dei servizi di sistema, o per definire dei ruoli o dei privilegi che possono essere assegnati a degli utenti sotto forma di gruppi supplementari. Ad esempio è comune definire un gruppo games (lett. "giochi") di cui occorre essere membri per poter eseguire dei programmi che sono giochi.

Al group identifier maggiore consentito dal sistema (solitamente 65534) viene comunemente associato il gruppo nobody (lett. "nessuno"), che non gode di alcun privilegio particolare, ed è comunemente usato da processi privilegiati per limitare le proprie possibilità di intervento quando lo impongono questioni di sicurezza.

