Linux'ta Bir Gruptaki Tüm Kullanıcılar Nasıl Listelenir
Yayınlanan: 2022-08-29Linux'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
Listenin en üstündeki girişlerin çoğunda üye yoktur, ancak “adm” grubunun iki, “cdrom” grubunun bir üyesi vardır.
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” 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.
Tek bir grup çıkarmak istiyorsak grep
kullanarak arama yapabiliriz. “ ^
” şapkası bir satırın başlangıcını temsil eder.
grep "^ devteam" /etc/group
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
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.
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
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
Manjaro'da, libuser
yüklenir, bu nedenle favori AUR yardımcınızı kullanmanız gerekir. yay
kullandık.
yay libuser
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
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
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
- "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.
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” 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