(Nota: il groupscomando, sebbene sia ancora utile, è in gran parte sostituito dal comando id .)
Un utente ha un gruppo primario che è tradizionalmente definito nel file
/etc/passwdfile con il quale accede, ma che oggi può avere altre fonti. Può anche essere un membro di gruppi aggiuntivi, noti come gruppi secondari o supplementari, tradizionalmente specificati nel file /etc/groups, ma che oggi possono anche derivare o essere impliciti da fonti aggiuntive (come NIS, LDAP, SAMBA ecc.).
I gruppi primari e supplementari sono definiti al momento dell'accesso e rimangono aggiornati . Tuttavia, l'utente può in qualsiasi momento modificare il proprio gruppo primario attivo corrente
utilizzando il newgrpcomando
Il processo di accesso imposta i gruppi primario e supplementare. Per il successivo, in genere chiama initgroups della funzione libc
, che compila l'elenco di dati di gruppo supplementari e lo passa alla
funzione setgroups , che lo stabilisce nel contesto del processo.
Le fonti di informazione per initgroupssono:
usato dalla GNU C Library e da alcune altre applicazioni per determinare le fonti da cui ottenere informazioni sul servizio dei nomi in una gamma di categorie e in quale ordine. Ogni categoria di informazioni è identificata da un nome di database.
Il groupscomando mostra i gruppi attualmente applicati al tuo utente e l'elenco inizierà con il gruppo primario corrente seguito dai gruppi supplementari dal momento dell'accesso. Eventuali modifiche alle fonti dei dati dopo il momento dell'accesso non si riflettono nell'elenco visualizzato.
Il groups usernamecomando di sta chiedendo Linux per il calcolo dei gruppi per l'utente, che lo farà utilizzando principalmente i file /etc/password
e le /etc/groupse poi le altre fonti. Ciò rifletterà la situazione attuale dei file di sistema e potrebbe non essere uguale ai gruppi correnti che sono ancora in vigore dal momento dell'accesso.
Il groups usernamecomando può dare un risultato diverso quando non utilizza tutte le fonti utilizzate dal processo di accesso per calcolare i gruppi supplementari, che è ciò che apparentemente è accaduto nel tuo caso. Queste fonti potrebbero non essere accessibili dal tuo login o potrebbero non essere consultate dal comando.
L'uso del id usernamecomando può fornire risultati migliori, anche se non è garantito che sia completo come quello del processo di accesso. Il idcomando è più recente di ed era destinato a essere più preciso del vecchio groupscomando.
Mentre il groupscomando dà un risultato preciso e corretto, hai ben dimostrato che groups usernamenon si può fare affidamento sul comando per fare lo stesso.
Senza esaminare il codice sorgente del groupscomando, immagino che l'implementazione del groups usernamecomando nelle tue analisi di distribuzione Linux /etc/groups, che nel tuo caso non contenesse nulla, ma non utilizzi /etc/nsswitch.conf, da cui provenissero tutti i tuoi gruppi supplementari. Pertanto è elencato solo il nome del gruppo primario,
jacob.
Per ulteriori informazioni, vedere: