OP, groups komutunu kullanma olasılığını dışlamak için soruyu ifade etti . Bu Linux'ta coreutils'in bir parçası olduğundan, (a) kaldırıldı ya da (b) OP ismi yanlış yazıyor.
OP bunun gibi kullanılmış olabilir groups
:
for name in $(cut -d: -f1 /etc/passwd);do groups $name|grep -w sudo|awk '{print $1;}';done
Biri önerilen cevap sadece grubun adı için grep's /etc/group
. Bazen bu amaçlandığı gibi çalışır.
Grep'in biraz daha iyi kullanılması aşağıdakilerin sözdizimini dikkate alır /etc/group
:
group_name:password:GID:user_list
sadece bir parçası, böylece daha önce ilk iki nokta geçerli bir grup adıdır. Sözdizimine bakmadan düz bir grep dosyadan yanıltıcı eşleşmeler alabilir (ve olacaktır). Grep öğesinin tam olarak ihtiyaç duyulanı eşleştirmesi için normal ifadeleri kullanın:
grep -E '^users:' /etc/group |sed -e 's/^.*://'
veya bir kabuk değişkeni kullanarak:
grep -E '^'$groupname':' /etc/group |sed -e 's/^.*://'
Ancak, bu yalnızca varsayılan bir grupta olmayanları listeler . Eklemek için olanlar , aralarından grup kimliği numarası çıkararak dikkate örneğin şifre dosyasını almak gerekir /etc/group
, ve kimin varsayılan grubu eşleşmeler kullanıcıları baskı /etc/passwd
örneğin,
grp=$(awk -F: '$1 ~ /^users$/ {print $3; }' </etc/group)
awk -F: '$4 ~ /^'$grp'$/ { print $1; }' </etc/passwd
Aynı şeyi sadece grep ve sed kullanarak da yapabilirsiniz, ancak awk kullanmaktan daha fazla iştir.
Bir getent
Linux makinesinde olması muhtemel olan bir başka önerilen cevap da önerilmiştir (Debian ile birlikte, GNU libc'nin bir parçasıdır). Bununla birlikte, bunun hızlı bir kontrolü, yalnızca /etc/group
içerik sağladığını gösterir .
Ben (çoğu gibi) kullanmıyorum libusers
ya da lid
kurmadım, bu yüzden OP’nin koşullarını sağlayıp sağlamadığını yorumlayamıyorum.
Ayrıca id
grup bilgisi veren program da bulunmaktadır. Birisi bunun üzerine olası bir cevap olarak genişleyebilir.
groups
emirdir. Coreutils'in bir parçası olduğu için Linux'ta bulunmaması olası değildir.