id komutu: UID ve grupları görme, whoami, groups ve ek gruplar

Test ortamıRHEL ailesiAlmaLinux 9.8coreutils 8.32root hesabıDebian 12 · coreutils 9.1 normal hesap
Kullanıcı · grup komutlarıid, whoami, groupsKonum/usr/bin/id

Linux sunucusunda geçerli hesabın UID değerini ve gruplarını görmek için id komutu kullanılır; yalnızca hesap adı gerekiyorsa whoami, yalnızca grup adları gerekiyorsa groups kullanılır. AlmaLinux 9 ve Debian 12 sunucularında üç komut sırayla çalıştırılıp çıktılar karşılaştırıldığında id -un ile whoami aynı hesap adını yazdırdı, groups ise id komutunun grup listesini yalnızca adları bırakarak yazdırdı.

Aşağıdaki çıktı AlmaLinux 9.8 sunucusunda root hesabıyla ve Debian 12 sunucusunda normal bir hesapla çalıştırılarak alındı. Oturum açan hesabın adı ve numaraları ile ek grupları örnek değerlerle (user1, 1000, adm, systemd-journal) değiştirildi.

1️⃣ id komutunun temel kullanımı

  • ↪️ uid, gid ve groups: üç alanı okuma

id seçenek verilmeden çalıştırıldığında, geçerli kabuğu başlatan hesabın bilgileri tek satırda çıkar. root hesabında çalıştırıldığında üç alanın hepsi 0(root) idi.

id
uid=0(root) gid=0(root) groups=0(root)

uid alanı hesabın numarası ve adı, gid alanı ise birincil grubun (primary group) numarası ve adıdır. groups alanı hesabın üye olduğu bütün gruplardır ve en başta birincil grup yer alır.

id komutundan sonra bir hesap adı yazılırsa o hesabın bilgileri yazdırılır. Ek grupları olan normal hesap user1 için bakıldığında groups alanında birincil grup user1 ardından adm ve systemd-journal geldi. Birincil grup dışında üye olunan bu gruplar ek gruplardır (supplementary group).

id user1
uid=1000(user1) gid=1000(user1) groups=1000(user1),4(adm),190(systemd-journal)

UID ile gid numarası aynı olan hesap çok olduğundan iki sayı kolayca aynı değer sanılır; oysa sunucuda varsayılan olarak bulunan adm hesabının UID değeri 3, birincil grup numarası 4 idi. operator hesabının birincil grubu root idi.

id adm
uid=3(adm) gid=4(adm) groups=4(adm)
id operator
uid=11(operator) gid=0(root) groups=0(root)

Birden çok hesap yazılırsa her satıra bir hesap yazdırılır.

id root bin
uid=0(root) gid=0(root) groups=0(root)
uid=1(bin) gid=1(bin) groups=1(bin)

Olmayan bir hesap yazılırsa [no such user] hatası çıkar; çıkış kodu 1 idi.

id no-such-user9
id: 'no-such-user9': no such user
echo $?
1

Var olan bir hesap yazıldığında çıkış kodu 0 olduğundan, betiklerde hesabın var olup olmadığını sınayan koşul olarak kullanılabilir.

2️⃣ id komutunun seçenekleri

  • ↪️ -u, -g, -G ile numara ve -n ile ad

Bütün çıktıdan tek bir numara betiğe aktarılacaksa seçenekle tek bir alan seçilir. -u UID değerini, -g birincil grup numarasını, -G üye olunan grupların bütün numaralarını yazdırır.

id -u
0
id -u daemon
2
id -G user1
1000 4 190

-n birlikte kullanılırsa numara yerine ad çıkar. user1 hesabının gruplarına [id -Gn] ile bakıldığında üç numara üç ada dönüştü.

id -Gn user1
user1 adm systemd-journal
id -gn user1
user1

-n ve -r, -u, -g, -G seçeneklerinden biriyle birlikte kullanılır. -n tek başına yazıldığında aşağıdaki hata çıktı.

id -n
id: cannot print only names or real IDs in default format

-r, etkin (effective) ID yerine gerçek (real) ID değerini yazdırır. root hesabının kabuğunda [id -ur] çalıştırıldığında 0 çıktı. -u ve -g gibi numara seçen seçeneklerden iki veya daha fazlası birlikte yazılırsa [cannot print "only" of more than one choice] hatası çıkar. Seçenekler aşağıda toplanmıştır.

SeçenekKopyalaAçıklama
-u--userUID numarasını yazdırır
-g--groupBirincil grup numarasını yazdırır
-G--groupsÜye olunan grupların bütün numaralarını yazdırır
-n--name-u, -g, -G ile birlikte numara yerine adı yazdırır
-r--real-u, -g, -G ile birlikte etkin ID yerine gerçek (real) ID değerini yazdırır
SeçenekKopyalaAçıklama
-Z--contextYalnızca sürecin güvenlik bağlamını yazdırır
-z--zeroÇıktı öğelerini boşluk yerine NUL karakteriyle ayırır; varsayılan biçimde kullanılamaz
-aYalnızca id komutunun başka sürümleriyle uyumluluk için kabul edilir ve yok sayılır
--helpYardımı yazdırır
--versionSürümü yazdır

🔲 id komutu simülatörü

Aşağıdaki simülatör, ek grupları olan user1 hesabıyla başlar. [🖊 Other window] çipiyle wheel grubu eklendikten sonra [id] ile [id user1] karşılaştırılabilir ve [🔁 Log in again] çipiyle yeni kabuğun gruplarına bakılabilir.

id komutu simülatörücoreutils 8.32
[root@server work]#
Yalnızca tarayıcının içinde çalışır. [🖊 Other window] çipiyle gruplar değiştirildikten sonra [id] ile [id user1] karşılaştırılır ve [🔁 Log in again] çipiyle yeni kabuğun gruplarına bakılır.

3️⃣ whoami komutu ve id -un

  • ↪️ Geçerli hesap adını görme ve başka hesaplara bakma

Yalnızca geçerli kabuğun hesap adı gerekiyorsa whoami çalıştırılır. man sayfası whoami komutunu [id -un] ile aynı komut olarak açıklar. root hesabında iki komut çalıştırıldığında ikisi de root yazdırdı.

whoami
root
id -un
root

Debian 12 sunucusundaki normal hesapta da iki komut aynı hesap adını yazdırdı.

whoami
user1
id -un
user1

whoami, o andaki etkin (effective) UID değerine karşılık gelen hesap adını yazdırır. Yalnızca geçerli hesaba bakan bir komut olduğundan arkasına hesap adı eklenirse hata çıkar.

whoami user1
whoami: extra operand 'user1'
Try 'whoami --help' for more information.

Başka bir hesabın adına veya numarasına, id komutundan sonra o hesap yazılarak bakılır.

id -un user1
user1

-un yerine -u yazılırsa aynı yerde hesap adı yerine UID numarası çıkar.

4️⃣ groups komutu ve ek gruplar

  • ↪️ Birincil grup ile ek gruplar ve gruplar değiştirildikten sonraki kabuk

groups yalnızca grup adlarını tek satırda yazdırır. Hesap adı yazılmazsa geçerli kabuğun grupları çıkar; root hesabında yalnızca root vardı.

groups
root

Hesap adı yazılırsa hesap adı ve iki noktadan sonra gruplar çıkar. Birden çok hesap yazıldığında her satıra bir hesap yazdırıldı.

groups user1 daemon
user1 : user1 adm systemd-journal
daemon : daemon

Birincil grup ile ek grupların kaydedildiği yer farklıdır. Ek gruplar grup veritabanının (/etc/group) dördüncü alanına üye olarak, birincil grup ise hesap bilgilerinin (/etc/passwd) dördüncü alanına numara olarak yazılır.

getent group adm
adm:x:4:user1
getent group user1
user1:x:1000:
getent passwd daemon
daemon:x:2:2:daemon:/sbin:/sbin/nologin

user1 hesabının birincil grubu olan user1 grubunun dördüncü alanı boştu, ek grup adm satırında ise user1 üye olarak yazılıydı. daemon hesabının satırındaki dördüncü alanda bulunan 2, birincil grup numarasıdır.

Bir ek gruba hesap eklemek için usermod komutu, [usermod -aG grup hesap] biçiminde kullanılır. -a olmadan yalnızca -G kullanılırsa hesap, listeye yazılmayan mevcut ek gruplardan çıkar; bu yüzden -a birlikte yazılır.

Hesap adı olmadan çalıştırılan groups, geçerli kabuk sürecinin gruplarını yazdırır. man sayfası, grup veritabanı değişirse bu değerin veritabanından farklı olabileceğini açıklar.

Bu yüzden gruplar değiştirildikten hemen sonra veritabanındaki gruplara [groups hesap] veya [id hesap] ile bakılır; kabuğa yansıması için yeniden oturum açılır. Oturum açıkken geçerli grup ID değerini değiştiren komut olarak newgrp vardır.

🔢 SSS & önerilen içerikler

Yazılabilir. AlmaLinux 9.8 sunucusunda [id 0] çalıştırıldığında [id root] ile aynı uid=0(root) gid=0(root) groups=0(root) çıktı.

/etc/login.defs dosyasındaki UID_MIN değerinde yazan numaradan başlar. AlmaLinux 9.8 sunucusunda bu 1000 idi; aynı dosyadaki SYS_UID_MIN ve SYS_UID_MAX ise 201 ve 999 olup sistem hesaplarının aralığıydı.

who am i, who komutunun arkasına iki kelime eklenmiş halidir; -m seçeneğiyle aynı şekilde çalışır ve o an yazılan terminalin oturum bilgisini tek satır olarak yazdırır. whoami ise yalnızca o andaki etkin UID değerinin hesap adını tek satır olarak yazdırır.

ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İnsan olduğunuzu kanıtlayın: 8   +   3   =