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:
for name in $(cut -d: -f1 /etc/passwd);do groups $name|grep -w sudo|awk '{print $1;}';done
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
:
group_name:password:GID:user_list
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:
grep -E '^users:' /etc/group |sed -e 's/^.*://'
atau menggunakan variabel shell:
grep -E '^'$groupname':' /etc/group |sed -e 's/^.*://'
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,
grp=$(awk -F: '$1 ~ /^users$/ {print $3; }' </etc/group)
awk -F: '$4 ~ /^'$grp'$/ { print $1; }' </etc/passwd
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
atau lid
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.
groups
perintahnya. Tidak mungkin Anda tidak memilikinya di Linux, karena itu adalah bagian dari coreutils.