October 23, 2026
Kullanıcı ve Grup Yönetiminin Derinlemesine Analizi, PAM Güvenliği ve Çekirdek Dosya Anatomisi
1. Giriş: Çok Kullanıcılı (Multi-User) Mimarinin Temelleri

By Şerife Nazlı Ünay
4 min read
1. Giriş: Çok Kullanıcılı (Multi-User) Mimarinin Temelleri
Linux, yapısı gereği multi-user (çok kullanıcılı) ve multi-tasking (çok görevli) bir işletim sistemidir. Bir sunucu üzerinde aynı anda yüzlerce süreç (process) ve onlarca farklı yetki seviyesindeki kullanıcı çalışabilir.
DevOps ve Bulut Altyapı Yönetiminde temel amaç: Principle of Least Privilege (En Az Yetki Prensibi — PoLP) doğrultusunda sistem erişimlerini izole etmektir.
- Neden
rootKullanılmamalı? Bütün süreçlerinroot(UID 0) ile çalıştırılması, uygulamadaki tek bir zafiyetin (örneğin Remote Code Execution) tüm sunucunun ele geçirilmesine yol açar. - Grup Tabanlı Erişim (RBAC): İzinler tek tek bireylere değil, rollere (gruplara) atanır. Bir çalışanın takımı değiştiğinde sadece grubunu güncellemek yeterli olur.
2. Senaryo ve Mimari Tasarım
Uygulama çalışmamızda aşağıdaki hiyerarşiyi kuracağız:
[Sistem Grupları]
├── devops-team (GID: Auto/1001) ---> devops kullanıcısı (Primary Group)
└── developers (GID: Auto/1002) ---> developer kullanıcısı (Primary Group)
[Kullanıcılar]
├── devops (UID: 1001) -> Home: /home/devops -> Shell: /bin/bash
├── developer (UID: 1002) -> Home: /home/developer -> Shell: /bin/bash
└── tester (UID: 1003) -> Home: /home/tester -> Shell: /bin/bash (Default Group)[Sistem Grupları]
├── devops-team (GID: Auto/1001) ---> devops kullanıcısı (Primary Group)
└── developers (GID: Auto/1002) ---> developer kullanıcısı (Primary Group)
[Kullanıcılar]
├── devops (UID: 1001) -> Home: /home/devops -> Shell: /bin/bash
├── developer (UID: 1002) -> Home: /home/developer -> Shell: /bin/bash
└── tester (UID: 1003) -> Home: /home/tester -> Shell: /bin/bash (Default Group)3. Adım Adım Komut Uygulamaları ve Derinlemesine Teknik Analiz
Adım 1: Sistem Gruplarının Oluşturulması (groupadd)
Sistemde yetkilendirme katmanını oluşturmak için ilk adım grupları tanımlamaktır.
sudo groupadd devops-team
sudo groupadd developerssudo groupadd devops-team
sudo groupadd developersDerinlemesine İnceleme:
groupaddkomutu çalıştırıldığında arka planda/etc/groupve/etc/gshadowdosyalarına yeni birer satır eklenir.- Eğer özel bir GID belirtilmezse (örn:
-g 1500), sistem/etc/login.defsdosyasındakiSYS_GID_MIN-SYS_GID_MAXveyaGID_MIN-GID_MAXaralığında boşta olan ilk id'yi otomatik atar.
Adım 2: Izole Kullanıcı Hesaplarının Oluşturulması (useradd)
Her bir rol için izole ev dizinleri ve grup bağlantıları olan kullanıcılar oluşturuyoruz.
# devops kullanıcısı ve birincil grubu devops-team
sudo useradd -m -g devops-team devops
# developer kullanıcısı ve birincil grubu developers
sudo useradd -m -g developers developer
# tester kullanıcısı (Özel grup belirtilmeden)
sudo useradd -m tester# devops kullanıcısı ve birincil grubu devops-team
sudo useradd -m -g devops-team devops
# developer kullanıcısı ve birincil grubu developers
sudo useradd -m -g developers developer
# tester kullanıcısı (Özel grup belirtilmeden)
sudo useradd -m testerKomut Parametrelerinin ve İç Mimarinin Detayı:
-m(--create-home): Kullanıcı için/home/<kullanici_adi>dizinini oluşturur. Dizin oluşturulurken/etc/skel(skeleton) klasöründeki varsayılan profil dosyaları (.bashrc,.bash_logout,.profile) bu yeni ev dizinine kopyalanır ve sahipliğichownile yeni kullanıcıya verilir.-g(--gid): Kullanıcının Primary Group (Birincil Grup) tanımını yapar. Kullanıcı bir dosya oluşturduğunda, o dosyanın grup sahipliği varsayılan olarak bu grup olur.-s(--shell): Belirtilmezse/etc/default/useradddosyasındaki varsayılan kabuk (genelde/bin/shveya/bin/bash) atanır.
useradd vs adduser Karşılaştırması:
Adım 3: Parola Ataması ve Linux PAM (Pluggable Authentication Modules) Analizi
Kullanıcılar oluşturulduğunda parola alanları kilitlidir (! veya *). Hesapları aktif etmek için parola tanımlıyoruz.
sudo passwd devops
sudo passwd developer
sudo passwd testersudo passwd devops
sudo passwd developer
sudo passwd testerPAM Güvenlik Uyarısının İncelemesi:
tester kullanıcısına parola verirken karşılaşılan uyarı:
BAD PASSWORD: The password contains the user name in some formBAD PASSWORD: The password contains the user name in some formArka Plan Mekanizması: Linux'ta kimlik doğrulama süreci /etc/pam.d/common-password konfigürasyonunu kullanan PAM (pam_cracklib veya pam_pwquality) modülleri tarafından yönetilir.
- Bu modül; parolanın uzunluğunu, küçük/büyük harf oranını, kullanıcı adıyla benzerliğini ve sözlük kontrolünü yapar.
- Root Ayrıcalığı (Sudo Privilege): Normal bir kullanıcı bu uyarıyı aldığında sistem yeni parolayı reddeder. Ancak işlemi
sudoile çalıştırdığımız için Linux çekirdeği root kullanıcısının kararını nihai kabul eder ve güvenlik uyarısına rağmen parolayı kaydeder.
Adım 4: Kullanıcı ve Grup Üyeliklerinin Doğrulanması (id, groups, whoami)
Sistemdeki kimlik yapılandırmasını test etmek için şu komutlar kullanılır:
# Giriş yapmış aktif oturum kullanıcısını gösterir
whoami
# Kullanıcının UID, GID ve üyelik detaylarını verir
id devops
id developer
id tester
# Kullanıcının dahil olduğu tüm grupları listeler
groups tester# Giriş yapmış aktif oturum kullanıcısını gösterir
whoami
# Kullanıcının UID, GID ve üyelik detaylarını verir
id devops
id developer
id tester
# Kullanıcının dahil olduğu tüm grupları listeler
groups testerid devops Çıktı Analizi:
uid=1001(devops) gid=1001(devops-team) groups=1001(devops-team)uid=1001(devops) gid=1001(devops-team) groups=1001(devops-team)- UID 1001: Linux'ta 0–999 arası UID'ler sistem (system/daemon) hesaplarına ayrılmıştır. 1000 ve üzeri UID'ler gerçek (regular) kullanıcılara atanır.
- GID 1001: Kullanıcının ana grubunun ID'si.
Adım 5: İkincil Grupların Yönetimi (usermod)
Var olan bir kullanıcıyı ek bir gruba dahil etmek istediğimizde usermod kullanırız:
# tester kullanıcısını ikincil (supplementary) olarak developers grubuna ekleme
sudo usermod -aG developers tester# tester kullanıcısını ikincil (supplementary) olarak developers grubuna ekleme
sudo usermod -aG developers testerKRİTİK GÜVENLİK UYARISI (
-aParametresi):usermod -Gkomutunda-a(append) parametresini unutursanız, kullanıcının daha önce üye olduğu tüm ikincil gruplar silinir ve sadece yeni belirtilen grup kalır! Bu yüzden her zaman-aGkombinasyonu kullanılmalıdır.
4. Linux Çekirdek Konfigürasyon Dosyalarının Derinlemesine Anatomi Analizi
Kullanıcı yönetimi arka planda 3 temel metin dosyasında tutulur. Bu dosyaların yapısını bilmek, sistem çökmesinde veya kurtarma (recovery) modunda manuel müdahale edebilmek için şarttır.
A. /etc/passwd Anatomi ve Formatı
Tüm sistem kullanıcılarının profillerini içerir. Okuma izni tüm kullanıcılara açıktır (644 - rw-r--r--).
cat /etc/passwd | tail -n 3cat /etc/passwd | tail -n 3Örnek Çıktı:
devops:x:1001:1001::/home/devops:/bin/bashdevops:x:1001:1001::/home/devops:/bin/bashDosya iki nokta (:) ile ayrılmış 7 alandan oluşur:
B. /etc/shadow Anatomi, Hashing ve Salt Teknolojisi
Kullanıcıların şifrelenmiş parola ve hesap geçerlilik bilgilerini tutar. Güvenlik nedeniyle sadece root okuyabilir (640 veya 600).
sudo cat /etc/shadow | tail -n 3sudo cat /etc/shadow | tail -n 3Örnek Çıktı:
devops:$6$qZ8x9A2m$a8K1U...0X:19800:0:99999:7:::devops:$6$qZ8x9A2m$a8K1U...0X:19800:0:99999:7:::Dosya iki nokta (:) ile ayrılmış 9 alandan oluşur:
- Kullanıcı Adı:
devops - Encrypted Password (Hash): Parolanın karma edilmiş hali.
- Format:
$id$salt$encrypted_hash $6$→\rightarrow→ SHA-512 Algoritması$1$→\rightarrow→ MD5$2a$→\rightarrow→ Blowfish$5$→\rightarrow→ SHA-256- Salt Nedir? Hash işleminden önce parolaya eklenen rastgele dizilimdir. Bu sayede iki farklı kullanıcı aynı şifreyi (örneğin
123456) koysa bile shadow dosyasındaki hash'leri tamamen farklı görünür ve Rainbow Table (önceden hesaplanmış hash tabloları) saldırıları engellenir. - Son Şifre Değişim Tarihi:
19800(1 Ocak 1970 Epoch tarihinden itibaren geçen gün sayısı). - Minimum Şifre Yaşı:
0(Şifrenin değiştirilmesi için geçmesi gereken gün sayısı). - Maksimum Şifre Yaşı:
99999(Şifrenin geçerli olduğu gün sayısı). - Şifre Uyarı Süresi:
7(Şifre dolmadan kaç gün önce uyarı verileceği). - İnaktif Kalma Süresi: Şifre dolduktan kaç gün sonra hesabın dondurulacağı.
- Hesap Son Kullanma Tarihi: Epoch cinsinden hesabın tamamen kapanacağı tarih.
- Ayrılmış Alan: İleride kullanılmak üzere boş bırakılmıştır.
C. /etc/group Anatomi ve İkincil Gruplar
Grup tanımlarını ve grup üyelerini tutar. Okuma izni herkese açıktır (644).
cat /etc/group | tail -n 3cat /etc/group | tail -n 3Örnek Çıktı:
devops-team:x:1001:
developers:x:1002:testerdevops-team:x:1001:
developers:x:1002:testerFormat (4 Alan):
- Grup Adı (
developers): Grubun ismi. - Grup Parolası (
x): Grup parolalarının/etc/gshadowdosyasında olduğunu belirtir. - GID (
1002): Grubun benzersiz id değeri. - Grup Üyeleri (
tester): Bu gruba ikincil (supplementary) olarak bağlı olan kullanıcıların virgülle ayrılmış listesi. (Note: Birincil grubu bu grup olan kullanıcılar bu listede görünmez, çünkü onların bilgisi doğrudan/etc/passwdiçindedir!)
5. Hızlı Başvuru Rehberi (Cheat-Sheet)
6. Özet ve Sonç
Linux ortamında yetkilendirme ve güvenlik, kullanıcı hesaplarının doğru kurgulanmasıyla başlar. Bu çalışmada:
- Takım bazlı roller ve izole kullanıcılar oluşturduk.
- Linux PAM mimarisinin parola politikalarını ve root ayrıcalıklarını inceledik.
- Arka planda çalışan
/etc/passwd,/etc/shadowve/etc/groupdosyalarının sistem seviyesindeki metada verilerini ayrıştırdık.
Bu altyapı, bir sonraki aşamada gerçekleştireceğimiz Dosya İzinleri (chmod/chown) ve Erişim Kontrol Listeleri (ACL) için gerekli olan yetki zeminini tamamlamış oldu.
Okuduğunuz için teşekkür ederim.☺️ Şerife Nazlı Ünay