Saya baru-baru ini membuat pengguna baru dan menugaskan mereka ke grup tertentu. Saya bertanya-tanya apakah ada perintah yang menunjukkan semua pengguna yang ditugaskan ke grup tertentu? Saya telah mencoba menggunakan perintah 'grup' namun setiap kali saya menggunakan ini dikatakan 'grup: tidak ditemukan'
68
groups
perintahnya. Tidak mungkin Anda tidak memilikinya di Linux, karena itu adalah bagian dari coreutils.Jawaban:
Anda dapat menggunakan grep:
Ini hanya mencantumkan keanggotaan grup tambahan, bukan pengguna yang menjadikan grup ini sebagai grup utama mereka. Dan itu hanya menemukan grup lokal, bukan grup dari layanan jaringan seperti LDAP.
sumber
sudo lid -g {group}
Saya memiliki sistem di mana jawaban ini mencantumkan 8 pengguna dalam sebuah grup sedangkansudo lid -g {group}
daftar 10.getent
jawaban oleh @Murray Jensen di bawah iniSaya lebih suka menggunakan perintah getent ...
Jadi untuk grup, Anda harus menggunakan yang berikut ...
di mana name_of_group diganti dengan grup yang ingin Anda cari. Perhatikan bahwa ini hanya mengembalikan keanggotaan grup tambahan, itu tidak termasuk pengguna yang memiliki grup ini sebagai grup utama mereka.
Ada banyak sekali pencarian lain yang dapat Anda lakukan ...
passwd
menjadi satu lagi yang bermanfaat, yang Anda perlukan untuk membuat daftar grup utama.sumber
sudo lid -g {group}
Saya memiliki sistem di mana jawaban ini mencantumkan 8 pengguna dalam sebuah grup sedangkansudo lid -g {group}
daftar 10.Lebih mudah dilakukan
groups [username]
Jika Anda ingin mendaftar semua pengguna lokal dan grup lokal mereka, Anda dapat melakukannya
cat /etc/passwd | awk -F':' '{ print $1}' | xargs -n1 groups
Jika Anda mendapatkan "grup: perintah tidak ditemukan", kemungkinan Anda telah mengedit jalur lingkungan Anda menjadi lebih buruk, untuk mengatur ulang jalur Anda lakukan
PATH=$(getconf PATH)
sumber
| grep {group}
ditambahkan dan memberikan jawaban yang benar tidak sepertigetent group name_of_group
ataugrep '^group_name_here:' /etc/group
cat /etc/passwd
, Anda harus menggunakangentent passwd
agar pengguna di nis / ldap tetap terdaftar. Satu-satunya kelemahan adalah itu bisa memakan waktu cukup lama.daftar semua pengguna dalam grup yang disebutkan.
sumber
groupmems
ini adalah bagian dari shadow utils yang digunakan pada kebanyakan distro Linux, namungroupmems
saat ini absen dari Debian dan turunannya ( bug sekarang sudah diperbaiki tetapi belum termasuk dalam rilis apa pun (per Nov 2016))groupmems
hanya berurusan dengan grup di/etc/group
(bukan yang di LDAP atau basis data pengguna lain) dan memerlukan hak pengguna super saat mencoba membuka / etc / gshadow.cut
dan teman).sudo lid -g {group}
. Saya memiliki sistem di mana jawaban ini mencantumkan 8 pengguna dalam grup sedangkansudo lid -g {group}
daftar 10.Saya terkejut tidak ada yang disebutkan
Perintah ini akan memberikan daftar grup pengguna.
sumber
groups
perintah mencetak keanggotaan grup untuk pengguna. Anda dapat menggunakanlid
perintah untuk mendaftar pengguna dalam grup seperti:sumber
lid
adalah bagian dari libuser, yang tidak diinstal secara default di banyak distribusi.OP mengajukan pertanyaan untuk mengecualikan kemungkinan menggunakan perintah grup . Karena itu adalah bagian dari coreutils di Linux, baik (a) itu dihapus, atau (b) OP salah mengetikkan namanya.
OP dapat digunakan
groups
seperti ini, misalnya:Satu saran menyarankan hanya grep's untuk nama grup
/etc/group
. Terkadang itu berfungsi sebagaimana dimaksud.Penggunaan grep yang sedikit lebih baik memperhitungkan sintaksis dari
/etc/group
:sehingga hanya bagian sebelum usus besar pertama adalah nama grup yang valid. Grep polos tanpa memperhatikan sintaks dapat (dan akan) mengambil kecocokan yang menyesatkan dari file. Gunakan ekspresi reguler untuk membuat grep mencocokkan dengan apa yang dibutuhkan:
atau menggunakan variabel shell:
Namun, itu hanya mencantumkan yang tidak dalam grup default . Untuk menambahkan orang-orang , Anda perlu memperhitungkan file password, misalnya, dengan mengekstraksi jumlah kelompok-id dari
/etc/group
, dan mencetak pengguna yang grup standar pertandingan dari/etc/passwd
, misalnya,Anda bisa melakukan hal yang sama hanya dengan menggunakan grep dan sed, tetapi lebih banyak pekerjaan daripada menggunakan awk.
Jawaban lain yang disarankan diusulkan menggunakan
getent
, yang juga kemungkinan berada pada mesin Linux (dengan Debian, itu adalah bagian dari GNU libc). Namun pemeriksaan cepat yang menunjukkan itu hanya menyediakan/etc/group
konten.Saya (seperti kebanyakan) tidak memiliki
libusers
ataulid
menginstal, jadi saya tidak dapat mengomentari apakah memenuhi persyaratan OP.Ada juga
id
program, yang memberikan informasi grup. Seseorang mungkin mengembangkannya sebagai jawaban yang mungkin.sumber
sed -n "s/^$groupname:.*://p" /etc/group
tetapi itu masih bisa melaporkan hasil yang salah jika nama grup berisi operator RE (.
misalnya tidak jarang dalam nama grup).getent
juga akan meminta LDAP / NIS ... meskipun mungkin tidak ketika enumerasi secara eksplisit dinonaktifkan untuk basis data grup.groups
tidak akan membantu karena mencantumkan grup yang diberikan pengguna sebagai lawan dari daftar anggota grup tertentu.Bekerja seperti pesona:
sumber
sudo lid -g
daftar 8. @ Bhavik Jawaban yang diterima juga tidak benar.Beberapa akan memberitahu Anda untuk menginstal libuser (untuk 'tutup') atau anggota (untuk 'anggota'). Tetapi berdasarkan jawaban https://unix.stackexchange.com/a/349648/77959 yang menangani masalah ini dengan keanggotaan grup login, saya menemukan grup lain tidak dicakup oleh skrip itu. Jadi - inilah yang terbaik dari kedua pendekatan yang digabungkan:
sumber
getent
atau grep'^group_name_here:' /etc/group
Modifikasi pendekatan user3717722 ini akan mencantumkan anggota grup dalam database NIS:
sumber