Apakah ada perintah untuk mendaftar semua nama grup Unix? [Tutup]

615

Saya tahu ada /etc/groupfile yang mencantumkan semua grup pengguna.

Saya ingin tahu apakah ada perintah sederhana untuk mencantumkan semua nama grup pengguna meskipun telah mem-parsing /etc/groupfile yang dapat dibaca dunia . Saya bersedia membuat halaman web administrator yang mencantumkan nama grup akun Linux.

cavila
sumber
6
Sejauh ini ia mencoba stackoverflow.com/questions/14059916/...
ott--
2
"Saya bersedia membuat halaman web yang berisi daftar pengguna Linux" - masalah apa yang Anda coba selesaikan? Ini terdengar seperti sesuatu yang dapat menyebabkan beberapa masalah keamanan (mengekspos daftar pengguna, mengekspos kredensial).
Saya mencoba memberikan contoh sederhana. Saya ingin membuka "halaman web sistem administrator untuk mencantumkan nama akun Linux saat ini". Di Linux saya dapat menemukan perintah untuk menambahkan pengguna, menghapus pengguna, mengubah pengguna, menemukan grup pengguna tertentu tetapi tidak menemukan perintah untuk mencari pengguna dengan fragmen nama. Saya pikir pertanyaannya tidak begitu relevan. Yang bisa saya lakukan untuk mengingat akun grup Linux adalah melakukan pencarian pada file / etc / group
cavila

Jawaban:

871

Untuk membuat daftar semua grup lokal yang ditugaskan pengguna untuknya, gunakan perintah ini:

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

Untuk info lebih lanjut-> Unix groups , Cut command , sort command

Arpit
sumber
3
Ya MichaelIT benar perintah grup tidak mencantumkan semua grup. Saya menanyakan hal ini karena tidak yakin apakah ada perintah sederhana seperti grup untuk mendaftar semua nama grup atau bahkan swith untuknya seperti grup [-a | --all] untuk mendaftar semua grup sistem tanpa melakukan pemindaian file.
cavila
1
ok jadi untuk sekarang jawabannya adalah TIDAK. Perlu menggunakan pengeditan teks untuk memfilter file grup.
cavila
3
Apa itu "cut -d: -f1"?
zed
5
@zed cutadalah perintah lain yang mengekstrak kolom spesifik dari input. Di sini saya mengekstraksi bidang 1 di mana bidang dibatasi oleh:
Arpit
267

Jika Anda ingin semua grup diketahui oleh sistem, saya sarankan menggunakan getent groupdaripada parsing /etc/group:

getent group

Alasannya adalah bahwa pada sistem jaringan, grup tidak hanya membaca dari /etc/groupfile, tetapi juga diperoleh melalui LDAP atau Yellow Pages (daftar grup yang diketahui berasal dari file grup lokal ditambah grup yang diterima melalui LDAP atau YP dalam kasus ini).

Jika Anda ingin hanya nama grup yang dapat Anda gunakan:

getent group | cut -d: -f1
dasup
sumber
7
Untuk beberapa usecases, daftar nama grup yang diurutkan mungkin lebih disukai:getent group | cut -d: -f1 | sort
user1364368
2
Jika garis bernomor diinginkan, lakukan getent group | cut -d: -f1 | sort | cat -n.
MLC
titik bagus untuk sistem jaringan seperti LDAP!
Maziyar
50

Di Linux, macOS dan Unix untuk menampilkan grup tempat Anda berada, gunakan:

id -Gn

yang setara dengan groupsutilitas yang sudah usang di Unix (sesuai manual Unix ).

Pada macOS dan Unix, perintah id -pdisarankan untuk interaktif normal.

Penjelasan parameter:

-G, --groups- cetak semua ID grup

-n, --name- cetak nama bukan angka, untuk-ugG

-p - Jadikan output yang dapat dibaca manusia.

kenorb
sumber
10
Dan id -Gn someusernamemengembalikan daftar grup untuk pengguna yang ditentukan.
suram
6
id -Gnz | xargs -0 -I% echo %akan membuat daftar masing-masing grup pada baris terpisah. Ini berguna jika nama grup memiliki spasi di dalamnya.
Mark Lakata
1
Bagaimana cara groupsusang? Ada sumber? Saya mencari "perintah unix groups usang" tetapi tidak menemukan apa pun.
Franklin Yu
1
@ FranklinYu Ada di halaman manual BSD untukgroups .
kenorb
3
Doest menjawab pertanyaan asli yang berkaitan dengan grup di luar pengguna saat ini.
Tidak,