id komutu: UID ve grupları görme, whoami, groups ve ek gruplar
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ı
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.
iduid=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 user1uid=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 admuid=3(adm) gid=4(adm) groups=4(adm)id operatoruid=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 binuid=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-user9id: 'no-such-user9': no such userecho $?1Var 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
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 -u0id -u daemon2id -G user11000 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 user1user1 adm systemd-journalid -gn user1user1-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 -nid: 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çenek | Kopyala | Açıklama |
|---|---|---|
| -u--user | UID numarasını yazdırır | |
| -g--group | Birincil 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çenek | Kopyala | Açıklama |
|---|---|---|
| -Z--context | Yalnı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 | |
| -a | Yalnızca id komutunun başka sürümleriyle uyumluluk için kabul edilir ve yok sayılır | |
| --help | Yardımı yazdırır | |
| --version | Sü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.
3️⃣ whoami komutu ve id -un
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ı.
whoamirootid -unrootDebian 12 sunucusundaki normal hesapta da iki komut aynı hesap adını yazdırdı.
whoamiuser1id -unuser1whoami, 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 user1whoami: 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 user1user1-un yerine -u yazılırsa aynı yerde hesap adı yerine UID numarası çıkar.
4️⃣ groups komutu ve ek gruplar
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ı.
groupsrootHesap 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 daemonuser1 : user1 adm systemd-journal
daemon : daemonBirincil 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 admadm:x:4:user1getent group user1user1:x:1000:getent passwd daemondaemon:x:2:2:daemon:/sbin:/sbin/nologinuser1 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
Hesap oluşturma
Linux: useradd komutu & passwd komutu
Yeni bir kullanıcı hesabı oluşturan ve o hesabın parolasını belirleyen komutlar.
Hesap silme
[Linux] userdel komutu: kullanıcı hesabı silme
Kullanılmayan bir kullanıcı hesabını silen ve ev klasörünü de birlikte temizleyen komut.
Parola süresi
Linux chage komutu
Bir kullanıcı hesabının parola kullanım süresini ve son kullanma tarihini görüp değiştiren komut.
ℹ️ 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.