1. Anasayfa
  2. Linux

Linux’ta Tüm Kullanıcıları Listelemek


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 etme
awk, 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.