Tüm kullanıcıları ve gruplarını göster


70

Varolan gruplarım ve kullanıcılarım olduğunu biliyorum, ancak ilişkilerinden emin değilim. Tüm kullanıcıları veya tüm grupları listelemek için kullanabileceğim bir kabuk komutu ve belirtilen bir kullanıcı / grup için tüm grupları / kullanıcıları listelemek için bir komut var mı?

Böylece bir şey showuserstüm kullanıcıları listeler ve içindeki showgroups -u thisusertüm grupları gösterir thisuser.


böyle bir komut yok. Sen kendin yazman gerek.
Chris

peki yacat /etc/passwd
Sudip Bhandari

Yanıtlar:


93

Tüm kullanıcılar:

$ getent passwd

Tüm gruplar:

$ getent group

Belirli bir kullanıcısı olan tüm gruplar:

$ getent group | grep username

speech-dispatcher(Grup bazında groups speech-dispatcher) ses grubuna ait bir kullanıcı olduğunu gördüm . Ancak getent groupkomut altında listelenmiyor ! Sorun nedir?
PHP Öğrenci

3
@PHPLearner Başka bir sorunuz varsa, lütfen bir soru yazın , yorum yazmayın .
AÇAA

1 Bu da kullanıcılar / gruplar geleneksel bulunmayan listelerini tek beri /etc/passwd& /etc/groupdosyalar sistemin böyle NIS ve LDAP, ya da başka bir alternatif kullanıcı / grup veritabanını, merkezi dizinleri kullanmak üzere yapılandırıldığında, yani sürece bu kullanıcı / grup numaralandırma destekler olarak .
HBruijn

Bu, numaralandırma kapalıysa tüm kullanıcıları ve grupları bir ldap veya sssd config dosyasında döndürmez.
Jens Timmerman

16

Kullanıcıları ve gruplarını listeleyin:

for user in $(awk -F: '{print $1}' /etc/passwd); do groups $user; done

Grupları ve kullanıcılarını listele:

cat /etc/group | awk -F: '{print $1, $3, $4}' | while read group gid members; do
    members=$members,$(awk -F: "\$4 == $gid {print \",\" \$1}" /etc/passwd);
    echo "$group: $members" | sed 's/,,*/ /g';
done

1
Bu muhtemelen işe yarayacak olsa da, biraz fazla karmaşık görünüyor, değil mi, bunu yapmak için mükemmel bir basit tek seferlik komutlar varken?
AÇAA

Bu kesinlikle merkezi bir havuzda yaşayan hiçbir şeyi elde etmeyecekti. Ve bu kesinlikle görmek isteyeceğiniz bir bilgi.
Magellan

Mükemmel çok faydalı, ayrı komutlar olduklarını söylemek daha iyi olur.
Mian Asbat Ahmad,

5

LDAP veya NIS gibi uzak kullanıcılarla ilgilenmiyorsanız, kullanıcıları ve ilişkili grupları basit bir şekilde listelemek için:

cut -d: -f1 /etc/passwd | xargs groups

Çıktı;

root : root
myuser : root www-data fuse 
anotheruser : anotheruser   cdrom floppy audio dip video plugdev scanner bluetooth netdev

1
Bu, Chang’ın LDAP, NIS vb. Gibi veritabanlarından kaynaklanan kullanıcıları / grupları göz ardı ettiği konusundaki cevabı ile aynı problemi var.
MadHatter

Bu, bilgileri çok net bir şekilde inanılmaz derecede net bir biçimde verir, yine de yararlı bir ilk adım olabilir. Bu, / etc / group ve / etc / passwd! Nin sözdizimiyle ilgili hafızamın çalışmasına yardımcı oldu!
Chris Woods

3

Tüm kullanıcıları listele

cut -d':' -f 1 /etc/passwd

Veya

awk -F ':' '{print $1}' /etc/passwd

İken cat / etc / passwd tüm kullanıcılar (ve diğer şeyler bir grup) gösterir, -f 1: '' -D kesti ayırıcı olarak ve (kullanıcılara sadece ilk alanı ayıklamak: '' ile her satırı bölmek için basit bir yoludur ). Awk versiyonu ile hemen hemen aynı.

Tüm grupları listele

cut -d':' -f 1 /etc/group

Veya

awk -F ':' '{print $1}' /etc/group

Tahmin etmek ne, kullanıcılar listeleme için çok benzer. Bunun yerine sadece / etc / group ayrıştırın .

OP'nin istediğine daha yakın bir başka ilginç yol da kompgen . Uyumluluk sorunları hakkında olsa emin değilim.

compgen -u
compgen -g

2
Merhaba Elliot Baily, Sunucu Arızasına Hoşgeldiniz! Lütfen bu sorunun 5 yaşın üzerinde olduğunu ve zaten doğru ve kabul edilmiş bir cevabı olduğunu unutmayın. Ayrıca, çözümünüzün yalnızca kullanıcılar / etc / passwd; Kabul edilen cevap diğer kullanıcı veritabanları için de geçerlidir (NIS veya LDAP gibi). Eski sorulara cevap vermek istiyorsanız (ki bu gayet iyi!) Cevapsız soruların listesine bakmak isteyebilirsiniz - bir miktar aşkı arayan birçok soru!
mart

-1

debian için

cat /etc/passwd # show all users
cat /etc/group # show all groups
cat /etc/passwd | grep group # show all users with specified group

2
Vb LDAP, NIS gibi bir uzak kullanıcı veritabanından kaynaklanan zaten / bu kullanıcıların listelemiyor kabul gruplarla aksine ....
HBruijn

-2

Bunun gibi, böyle:

sudo cat /etc/gshadow |grep group
sudo cat /etc/gshadow |grep username

1
Hayır. /etc/gshadowGrup üyeleri içermez ( /etc/groupyok) ve 4.5 yıl önceki kabul edilen cevap, uzak grupları da yönettiği için zaten çok daha genel.
Sven

-2

Belirli bir gruptaki tüm grubu ve kullanıcıları almak için bu komutu kullanın.

grep '
> ' /etc/group
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.