Linux'ta Bir Gruptaki Tüm Kullanıcılar Nasıl Listelenir

Yayınlanan: 2022-08-29
Bir bash istemi gösteren Linux dizüstü bilgisayar
fatmawati achmad zaenuri/Shutterstock.com

Linux'ta dosyaların üç izin grubu vardır. Bir set dosyanın grubu içindir. Bir gruba dosya ayırmadan önce, grup üyelerinin kim olduğunu kontrol etmek isteyebilirsiniz.

Dosya ve Dizin İzinleri

Linux'taki dosyalar ve dizinler, sahip için bir dizi izine, dosyanın tahsis edildiği grup için başka bir sete ve önceki iki kategoriden birinde olmayan herkes için izinlere sahiptir.

Her bir izin kümesi, o kategorinin üyelerinin dosyayı okuyup yazamayacağını veya yürütebileceğini tanımlar. Bir dizin durumunda, yürütme eylemi, dizine cd girebilmeye eşittir.

Bir dosya veya dizin için varsayılan grup, sahibin varsayılan grubudur. Bu genellikle onu yaratan kişidir. Grup izinleri, bir grup kullanıcının o grubun diğer üyelerinin dosyalarına ve dizinlerine kontrollü erişime sahip olmasına izin vermek için kullanılır.

Örneğin, bir geliştirici ekibiniz, bir dokümantasyon ekibiniz, bir araştırma ekibiniz vb. olabilir. Her takımın üyeleri, işbirliğine yardımcı olmak için uygun şekilde adlandırılmış bir gruba eklenebilir. Kullanıcılar aynı anda birçok grupta olabilir.

Bu basit ama sağlam bir şemadır. Ancak dosyalarınız hassassa, çalışmanızı onlarla paylaşmadan önce grup üyelerinin kim olduğunu kontrol etmekten daha mutlu hissedebilirsiniz. Bunu yapmanın farklı yolları vardır. Ama not al. En sık önerilen iki yöntem sorunludur.

İLGİLİ: Linux'ta chgrp Komutu Nasıl Kullanılır

/etc/groups Dosyası

“/etc/group” dosyası, iki nokta üst üste “ : ” ile ayrılmış grup ve grup üyeleri listesi içerir. Her satırın dört alanı vardır.

  • Ad : Grubun benzersiz adı.
  • Şifre : Kullanılmıyor. Bu her zaman "x" tutacaktır.
  • Grup Kimliği : Benzersiz grup tanımlayıcısı.
  • Kullanıcılar : Grup üyelerinin virgülle ayrılmış listesi. Liste, sistem ve arka plan programı hesapları için genellikle boştur.

Dosyanın içeriğini terminal penceresine boşaltmak için cat kullanabilirsiniz, ancak dosyanın içeriğini less ile kaydırmak daha uygundur.

 daha az /etc/group 

/etc/group dosyasının içeriğini görmek için cat kullanma

Listenin en üstündeki girişlerin çoğunda üye yoktur, ancak “adm” grubunun iki, “cdrom” grubunun bir üyesi vardır.

Daha az dosya görüntüleyicide /etc/groups dosyasının ilk kısmı

Belirli bir kullanıcının bulunduğu grupları keşfetmek istiyorsak, kullanıcı hesap adlarıyla girişleri aramak için grep kullanabiliriz. Bu bizim elimizdeki görev değil. Bir kişinin ait olduğu grupları değil, bir grubun üyesi olan herkesi görmek istiyoruz. Ama bir göz atmak bizim için öğreticidir.

 grep "dave" /etc/group 

dave kullanıcısının üyesi olduğu grupların listesi

“dave” dizesini içeren girdiler bizim için listelenmiştir. Ve bunların arasına gizlenmiş olan şey, işlerin düşündüğümüz kadar basit olmayabileceğinin bir işaretidir.

Linux'a bir kullanıcı eklendiğinde, varsayılan eylem onları kullanıcı hesabıyla aynı ada sahip bir gruba yerleştirmektir. Bu onların birincil grubudur. Eklendikleri diğer gruplar ikincil gruplar olarak bilinir.

Sorun, kullanıcıların birincil gruplarının üyeleri olarak listelenmemesidir. Bu nedenle, "dave" kullanıcısı o grubun bir üyesi olmasına rağmen, "dave" grubu herhangi bir üye göstermiyor.

Elbette, sistem yöneticileri herhangi bir kullanıcının birincil grubunu başka bir grubunkiyle değiştirebilir. Bu, bir kullanıcının herhangi bir grubun üyesi olabileceği, ancak “/etc/group” dosyasında bu şekilde listelenmeyeceği anlamına gelir. Bu bir sorun.

İkinci konu, “/etc/group” dosyasının tek bir doğruluk kaynağı olmamasıdır. Modern Linux kurulumları, özellikle Hafif Dizin Erişim Protokolü gibi hizmetlerin dağıtıldığı kurumsal durumlarda, kullanıcı ve grup bilgilerini “/etc/passwd” ve “/etc/group”tan daha fazla yerde depolayabilir. Sadece bir yere bakarak büyük resmi göremeyebilirsiniz.

Test senaryomuzda bir geliştirme departmanı için dört grup oluşturduk. Bunlar:

  • resteam : Araştırma ekibi.
  • devteam : Geliştirme ekibi.
  • pvqteam : Ürün doğrulama ve kalite ekibi.
  • docteam : Dokümantasyon ekibi.

Bu ekiplere insan ekledik. Bazı insanlar birden fazla takımda. “/etc/group” dosyasını less içinde açar ve dosyanın en altına kaydırırsak yeni grupları ve grup üyelerini görürüz. En azından “/etc/group” dosyasının bildiği kadar üye.

Daha az dosya görüntüleyicide /etc/group dosyasının alt kısmı

Tek bir grup çıkarmak istiyorsak grep kullanarak arama yapabiliriz. “ ^ ” şapkası bir satırın başlangıcını temsil eder.

 grep "^ devteam" /etc/group 

Tek bir grubun üyelerini çıkarmak için grep kullanma

Bu, "devteam" girişini dosyadan çıkarır ve tüm grup üyelerini listeler. Yoksa yapar mı?

Getent Komutanlığı

getent komutu, yalnızca "/etc/group" değil, kullanıcı grubu bilgileri için birden çok veritabanını kontrol eder. Bize kullanıcı gruplarını göstermek için getent kullanacağız.

 getent grubu 

Tanımlanmış tüm grupları listelemek için getent kullanma

group seçeneğiyle getent kullanmak, bu test makinesinde “/etc/group” dosyasını kullanmakla aynı sonuçları verir. Bunun nedeni, LDAP veya başka bir merkezi adlandırma hizmeti kullanmamamızdır. Yani getent başvurabileceği başka bir kaynak yok.

Grupları ve üyeleri gösteren getent grubundan çıktı

Sonuçların “/etc/group” dosyasındakilerle örtüşmesi şaşırtıcı değil. Belki de gerçekten gördüğümüz, durumun gerçeğidir. Belki her şey basittir ve - bu bilgisayarda - ne görüyorsanız onu alırsınız? Buna göre bir yargıda bulunalım.

getent komutu bizim için tek bir gruba bakabilir. “Devteam” grubuna bakacağız.

 getent grup geliştirici ekibi 

Tek bir grubun ayrıntılarını çıkarmak için getent grubunu kullanma

Daha önce olduğu gibi tamamen aynı sonuçları alıyoruz. Yine de daha derine inmenin bir yolu var.

İLGİLİ: Linux'ta Kullanıcılar Nasıl Listelenir

kapak Komutu

lid komutu, libuser araçlar koleksiyonunun bir parçasıdır. Fedora 36 test bilgisayarımıza zaten kurulmuştu ancak Ubuntu 22.04 ve Manjaro 21 bilgisayarlarına kurulması gerekiyordu.

Ayrıca, komuta Fedora ve Manjaro'da lid denir, ancak Ubuntu'da libuser-lid kullanmanız gerekir.

Komutu Ubuntu'ya yüklemek için şunu yazın:

 sudo apt kurulum libuser 

Ubuntu'da libuser kurulumu

Manjaro'da, libuser yüklenir, bu nedenle favori AUR yardımcınızı kullanmanız gerekir. yay kullandık.

 yay libuser 

Manjaro'da liuser kurulumu

Gruplar veya kullanıcılar hakkında grup bilgilerini görüntülemek için libuser-lid kullanabilirsiniz. Bir kişinin bulunduğu grupları göstermek için komut satırından kullanıcı hesap adını iletin. Fedora ve Manjaro'da libuser-lid lid kullanmayı unutmayın.

 sudo libuser-lib dave 

dave kullanıcısının üyesi olduğu grupları göstermek için libuser-lid kullanma

Bir grubun üyelerini görmek için grup adı ile birlikte -g (grup) seçeneğini kullanın.

 sudo libuser-lid -g geliştirici ekibi 

devteam grubunun üyelerini listelemek için libuser-lid kullanma

Bakın, listenin bir üyesi olarak “francis” adlı bir kullanıcı ortaya çıktı. Onu ilk defa böyle görüyoruz. “/etc/group” listesinde yer almıyor ve getent de onu keşfetmedi.

groups komutuyla birkaç kullanıcıya bakalım.

 gruplar abigail
 gruplar hayden
 gruplar francis 

Bir kullanıcı seçiminde gruplar komutunu kullanma

  • "abigail" kullanıcısı "abigail" adlı bir grupta ve diğer iki grupta, "resteam" ve "devteam" bulunur.
  • "hayden" kullanıcısı "hayden" adlı bir grupta ve "pvqteam" ve "docteam" adlı diğer iki gruptadır.
  • Kullanıcı “francis” tek bir grupta, “devteam” grubundadır. “francis” adlı bir grupta yer almamaları dikkat çekicidir.
Linux'ta Bir Gruba (veya İkinci Gruba) Kullanıcı Ekleme
İLGİLİ Linux'ta Bir Gruba (veya İkinci Gruba) Kullanıcı Ekleme

Her kullanıcının bir birincil grubun üyesi olması gerektiğini ve varsayılan olarak birincil grubun, kullanıcının UID'si ve hesap adıyla eşleşen bir GID'ye ve ada sahip olduğunu biliyoruz. "francis" kullanıcısında farklı bir şey varmış gibi görünüyor.

id komutunu kullanalım ve UID ve GID'lerin bize ne söylediğini görelim.

 id abigail
 francis kimliği 

abigail ve francis kullanıcılarında id komutunu kullanma

“abigail” kullanıcısının UID'si 1002 ve GID'si 1002'dir. Biri “abigail” olarak adlandırılan üç gruptadırlar. 1002'lik bir GID'ye sahiptir. Bu, onların varsayılan birincil grubudur.

"francis" kullanıcısı, "devteam" grubunun GID'si ile eşleşen 1019'luk bir GID'ye sahiptir. Bu kullanıcıya yeni bir birincil grup atanmış veya bu kullanıcı sisteme eklendiğinde "devteam" grubu birincil grup olarak ayarlanmış.

Hangisi olursa olsun, sadece libuser-lid onları algıladı ve “devteam” grubunda varlıklarını bildirdi.

Şeytan Ayrıntılarda Gizlidir

Bu yüzden gerçek detayları görmek önemlidir.

Kiminle açtığınızı bildiğiniz sürece, gruplar işbirliği kurmak için harika bir yoldur.

İLGİLİ: Linux'ta chfn ve usermod ile Kullanıcı Verileri Nasıl Değiştirilir