Tüm Unix grup adlarını listelemek için bir komut var mı? [kapalı]


615

/etc/groupTüm kullanıcı gruplarını listeleyen bir dosya olduğunu biliyorum .

Dünya tarafından okunabilir /etc/groupdosyayı ayrıştırmasına rağmen tüm kullanıcı grubu adlarını listelemek için basit bir komut olup olmadığını bilmek istiyorum . Linux hesaplarının grup adlarını listeleyen bir yönetici web sayfası oluşturmak istiyorum.



2
"Linux kullanıcılarını listeleyen bir web sayfası oluşturmak istiyorum" - hangi sorunu çözmeye çalışıyorsunuz? Bu, bazı güvenlik sorunlarına neden olabilecek bir şey gibi görünür (kullanıcı listesini gösterme, kimlik bilgilerini gösterme).

Basit bir örnek vermeye çalışıyordum. "Geçerli Linux hesap adlarını listelemek için bir" yönetici sistemi web sayfası "açmak istiyorum. Linux'ta bir kullanıcı eklemek, bir kullanıcıyı kaldırmak, bir kullanıcıyı değiştirmek, belirli bir kullanıcının gruplarını bulmak için komutlar bulabildim ancak bir kullanıcıyı ad parçasına göre aramak için bir komut bulamadım. Bence soru bu kadar alakasız değil. Bir Linux grup hesabını
rememebr

Yanıtlar:


871

Kullanıcıları atanmış tüm yerel grupları listelemek için şu komutu kullanın:

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

Daha fazla bilgi için -> Unix grupları , Kes komutu , sıralama komutu


3
Evet MichaelIT doğru grupları komutu tüm grupları listelemedi. Bunu sordum, çünkü tüm grup gruplarını listelemek için gruplar gibi basit bir komut veya dosya taraması yapmadan tüm sistem gruplarını listelemek için gruplar [-a | --all] gibi bir swith olup olmadığından emin değilim.
cavila

1
tamam şimdi cevap HAYIR. Grup dosyasını filtrelemek için metin düzenlemeyi kullanmanız gerekir.
cavila

3
"Cut -d: -f1" nedir?
zed

5
@zed cut, belirli bir sütunu girişten ayıklayan başka bir komuttur. Burada alanların sınırlandığı alan 1'i :
çıkarıyorum

267

Tüm grupların sistem tarafından bilinmesini istiyorsanız getent group, ayrıştırmak yerine /etc/groupşunları kullanmanızı öneririm :

getent group

Bunun nedeni, ağa bağlı sistemlerde, grupların yalnızca /etc/groupdosyadan değil aynı zamanda LDAP veya Sarı Sayfalar aracılığıyla da elde edilebilmeleridir (bilinen grupların listesi yerel grup dosyasından ve bu durumlarda LDAP veya YP aracılığıyla alınan gruplardan gelir).

Yalnızca grup adlarını kullanmak istiyorsanız:

getent group | cut -d: -f1

7
Bazı kullanımlarda grup adlarının sıralı bir listesi tercih edilebilir:getent group | cut -d: -f1 | sort
user1364368

2
Numaralı çizgiler isteniyorsa yapın getent group | cut -d: -f1 | sort | cat -n.
MLC

LDAP gibi ağ bağlantılı sistemler için harika bir nokta!
Maziyar

50

Ait olduğunuz grupları görüntülemek için Linux, macOS ve Unix'te şunları kullanın:

id -Gn

groups( Unix kılavuzuna göre ) Unix'te kullanılmayan hizmete eşdeğerdir .

MacOS ve Unix'te, id -pnormal etkileşimli komut önerilir.

Parametrelerin açıklaması:

-G, --groups- tüm grup kimliklerini yazdır

-n, --name- sayı yerine bir ad yazdırın,-ugG

-p - Çıktıyı okunabilir yapın.


10
Ve id -Gn someusernamebelirtilen kullanıcı için grup listesini döndürür.
Grim

6
id -Gnz | xargs -0 -I% echo %her grubu ayrı bir satırda listeler. Grup adlarında boşluklar varsa bu yararlıdır.
Mark Lakata

1
groupsEski nasıl ? Herhangi bir kaynak var mı? "Unix gruplar eski moda" aradım ama hiçbir şey bulamadım.
Franklin Yu


3
Mevcut kullanıcının dışındaki gruplarla ilgili orijinal soruyu yanıtlayın.
Nay
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.