Linux sistemlerinde kullanıcı bilgileri genellikle /etc/passwd
dosyasında saklanır. Bu dosya sistemdeki tüm kullanıcı hesapları hakkında bilgi içerir.
Bu makalede farklı Linux dağıtımlarında (Ubuntu, Debian, RHEL, CentOS, AlmaLinux, RockyLinux, Fedora, Arch Linux ve diğerleri) sistemdeki kullanıcıları listelemek için kullanabileceğiniz çeşitli yöntemleri detaylıca ele alıyoruz.
1. /etc/passwd
Dosyasını Kullanarak Tüm Kullanıcıları Listeleme
Linux’ta kullanıcı bilgileri /etc/passwd
dosyasında satır satır tutulur. Dosyanın içeriğini görüntülemek için:
cat /etc/passwd
Örnek komut çıktısı
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
Her satır aşağıdaki alanları içerir:
- Kullanıcı adı
- Şifre bilgisi (
x
, gerçek şifre/etc/shadow
dosyasındadır) - Kullanıcı ID (UID)
- Grup ID (GID)
- Kullanıcı bilgisi (GECOS alanı)
- Ev dizini
- Giriş kabuğu (Login shell)
İlk veya son 5 kullanıcıyı görmek için:
head -5 /etc/passwd
tail -5 /etc/passwd
Sadece Kullanıcı Adlarını Listeleme
2. Sadece Kullanıcı Adlarını Listelemek
awk aracı ile;
awk -F':' '{ print $1 }' /etc/passwd
cut aracı ile;
cut -d: -f1 /etc/passwd
3. getent
Komutu ile Kullanıcı Bilgileri
getent
sadece /etc/passwd
değil, sistemin tüm kimlik veritabanlarından (örn. LDAP) bilgi çekebilir.
Tüm kullanıcıları listelemek için;
getent passwd
Sadece kullanıcı adlarını almak için;
getent passwd | cut -d: -f1
Belirli bir kullanıcının var olup olmadığını kontrol etmek;
getent passwd kullanici_adi
4. Sistemdeki Toplam Kullanıcı Sayısını Görüntülemek
getent passwd | wc -l
cat /etc/passwd | wc -l
5. Belirli Bir Kullanıcının Varlığını Sorgulama
getent passwd kullanici_adi && echo "Kullanıcı var" || echo "Kullanıcı yok"
cat /etc/passwd | grep '^kullanici_adi:'
compgen -u | grep kullanici_adi
6. Sistem ve Normal Kullanıcıları Ayırmak
Genellikle:
- Sistem kullanıcıları: UID < 1000
- Normal kullanıcılar: UID ≥ 1000
UID aralığını öğrenmek için:
grep "^UID_MIN" /etc/login.defs
grep "^UID_MAX" /etc/login.defs
Sadece normal kullanıcıları listelemek:
awk -F':' '{ if ($3 >= 1000) print $1 }' /etc/passwd
Sadece sistem kullanıcılarını listelemek:
awk -F':' '{ if ($3 < 1000) print $1 }' /etc/passwd
7. compgen
ile Tüm Kullanıcıları Listeleme
compgen -u
Yalnızca kullanıcı adlarını verir.
8. Şu An Giriş Yapmış Kullanıcıları Görmek
who
veya:
w
Belirli bir kullanıcıyı görmek için:
w kullanici_adi
9. Script ile Normal Giriş Yapabilen Kullanıcıları Listelemek
#!/bin/bash
# Normal kullanıcıları listele (UID >= 1000 ve login shell’i aktif olanlar)
UID_MIN=$(grep "^UID_MIN" /etc/login.defs | awk '{print $2}')
UID_MAX=$(grep "^UID_MAX" /etc/login.defs | awk '{print $2}')
awk -F':' -v min=$UID_MIN -v max=$UID_MAX '{ if ($3 >= min && $3 <= max && $7 != "/sbin/nologin") print $1 }' /etc/passwd
10. Tüm Normal ve Sistem Kullanıcılarını Ayırarak Listelemek
#!/bin/bash
echo "---- Normal Kullanıcılar ----"
awk -F':' '$3 >= 1000 {print $1}' /etc/passwd
echo ""
echo "---- Sistem Kullanıcıları ----"
awk -F':' '$3 < 1000 {print $1}' /etc/passwd
11. Giriş Yapması Engellenmiş Kullanıcıları Listelemek
awk -F':' '{ if ($7 == "/sbin/nologin") print $1 }' /etc/passwd
Linux sisteminizde kullanıcıları listelemenin ve sınıflandırmanın pek çok yolu vardır:
/etc/passwd
ve getent
ile doğrudan kullanıcı bilgisi
UID filtreleme ile sistem ve normal kullanıcıları ayırt etmeawk
, cut
, grep
, compgen
gibi güçlü komut satırı araçları
Scriptler ile otomatik kullanıcı listeleri oluşturma
Anlık giriş yapan kullanıcıları izleme
Bu yöntemler sayesinde sisteminizi daha iyi yönetebilir, kullanıcı erişimlerini güvenli ve kontrollü biçimde izleyebilirsiniz.