Esiste un comando per elencare tutti i nomi dei gruppi Unix? [chiuso]


615

So che c'è il /etc/groupfile che elenca tutti i gruppi di utenti.

Vorrei sapere se esiste un semplice comando per elencare tutti i nomi dei gruppi di utenti nonostante l'analisi del /etc/groupfile leggibile dal mondo . Sono disposto a creare una pagina Web di amministratore che elenca i nomi dei gruppi degli account Linux.



2
"Sono disposto a creare una pagina Web che elenca gli utenti Linux" - quale problema stai cercando di risolvere? Sembra qualcosa che può causare alcuni problemi di sicurezza (esporre un elenco di utenti, esporre credenziali).

Stavo cercando di fare un semplice esempio. Vorrei aprire una "pagina Web del sistema amministratore per elencare i nomi degli account Linux correnti". In Linux ho potuto trovare i comandi per aggiungere un utente, rimuovere un utente, cambiare un utente, trovare i gruppi di un determinato utente ma non ho trovato un comando per cercare un utente in base al frammento di nome. Penso che la domanda non sia così irrilevante. Tutto quello che potevo fare per ricordare un account di gruppo Linux era fare una ricerca sul file / etc / group
cavila,

Risposte:


871

Per elencare tutti i gruppi locali a cui sono assegnati utenti, usare questo comando:

cut -d: -f1 /etc/group | sort

Per maggiori informazioni-> Gruppi Unix , comando Taglia , comando ordinamento


3
Sì, MichaelIT ha ragione, il comando gruppi non ha elencato tutti i gruppi. Ho chiesto questo perché non sono sicuro se esiste un semplice comando come i gruppi per elencare tutti i nomi dei gruppi o anche uno swith su di esso come i gruppi [-a | --all] per elencare tutti i gruppi di sistema senza eseguire la scansione dei file.
cavila,

1
ok quindi per ora la risposta è NO. È necessario utilizzare la modifica del testo per filtrare il file di gruppo.
cavila,

3
Che cos'è "cut -d: -f1"?
zed

5
@zed cutè un altro comando che estrae la colonna specifica da un input. Qui sto estraendo il campo 1 dove i campi sono delimitati da:
Arpit

267

Se si desidera che tutti i gruppi siano noti al sistema, si consiglia di utilizzare getent groupinvece di analizzare /etc/group:

getent group

Il motivo è che sui sistemi in rete i gruppi potrebbero non solo leggere da /etc/groupfile, ma anche ottenere tramite LDAP o Pagine gialle (l'elenco dei gruppi noti proviene dal file di gruppo locale più i gruppi ricevuti tramite LDAP o YP in questi casi).

Se vuoi solo i nomi dei gruppi puoi usare:

getent group | cut -d: -f1

7
Per alcuni casi d'uso potrebbe essere preferibile un elenco ordinato di nomi di gruppi:getent group | cut -d: -f1 | sort
user1364368

2
Se sono desiderabili linee numerate, fallo getent group | cut -d: -f1 | sort | cat -n.
MLC,

ottimo punto per sistemi in rete come LDAP!
Maziyar,

50

Su Linux, macOS e Unix per visualizzare i gruppi a cui appartieni, usa:

id -Gn

che è equivalente groupsall'utilità che è stata obsoleta su Unix (come da manuale Unix ).

Su macOS e Unix, il comando id -pè consigliato per il normale interattivo.

Spiegazione dei 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.


10
E id -Gn someusernamerestituisce l'elenco dei gruppi per l'utente specificato.
torvo

6
id -Gnz | xargs -0 -I% echo %elencherà ogni gruppo su una riga separata. Ciò è utile se i nomi dei gruppi contengono spazi.
Mark Lakata,

1
Come è groupsobsoleto? Qualche fonte? Ho cercato "comando gruppi unix obsoleto" ma non ho trovato nulla.
Franklin Yu,

1
@FranklinYu È nella pagina di manuale di BSD pergroups .
Kenorb,

3
Doest risponde alla domanda originale relativa a gruppi esterni all'utente corrente.
No
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.