Come scoprire quale gruppo ha un determinato utente?


256

In Unix / Linux, come scopri in quale gruppo appartiene un determinato utente tramite la riga di comando?


23
Per ottenere il contrario, vedere chi è in un determinato gruppo, è possibile utilizzare getent group <groupname>.
iconoclasta,

1
@iconoclast: che non elenca gli utenti appartenenti al gruppo in / etc / passwd.
user2284570,

Risposte:



102

Questo mostra l'id utente dell'utente e tutti i gruppi (con le loro gid) a cui appartengono

id userid

2
Anche questo sembra essere abbastanza utile. Ha un output più dettagliato rispetto al comando 'gruppi', quindi se hai bisogno dell'ID gruppo / ID utente usa questo!
Alex Argo,

Questa dovrebbe essere la risposta più dettagliata e corretta, avere un voto!
Harvey Lin,

16

Su Linux / OS X / Unix per visualizzare i gruppi di appartenenza dell'utente (o dell'utente facoltativamente specificato), utilizzare:

id -Gn [user]

che equivale a groups [user] all'utilità che è stata obsoleta su Unix.

Su OS X / Unix, il comando id -p [user] è consigliato per il normale interattivo.

Spiegazione sui parametri:

-G, --groups - stampa tutti gli ID di gruppo

-n, --name- stampa un nome anziché un numero, per-ugG

-p - Rendi l'output leggibile dall'uomo.


0

o semplicemente studia / etc / groups (ok questo probabilmente non funziona se usa pam con ldap)


7
In effetti, questa è una cattiva risposta. "getent group" è migliore.
Bortzmeyer,

0

Di seguito è riportato lo script integrato in ansible e che genera dashboard in formato CSV.

sh collection.sh

#!/bin/bash

HOSTNAME=`hostname -s`

for i in `cat /etc/passwd| grep -vE "nologin|shutd|hal|sync|root|false"|awk -F':' '{print$1}' | sed 's/[[:space:]]/,/g'`; do groups $i; done|sed s/\:/\,/g|tr -d ' '|sed -e "s/^/$HOSTNAME,/"> /tmp/"$HOSTNAME"_inventory.txt

sudo cat /etc/sudoers| grep -v "^#"|awk '{print $1}'|grep -v Defaults|sed '/^$/d;s/[[:blank:]]//g'>/tmp/"$HOSTNAME"_sudo.txt

paste -d , /tmp/"$HOSTNAME"_inventory.txt /tmp/"$HOSTNAME"_sudo.txt|sed 's/,[[:blank:]]*$//g' >/tmp/"$HOSTNAME"_inventory_users.txt

Il mio output è archiviato in file di testo sotto.

cat /tmp/ANSIBLENODE_sudo.txt
cat /tmp/ANSIBLENODE_inventory.txt
cat /tmp/ANSIBLENODE_inventory_users.txt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.