
Linux Kullanıcı ve Grup Yönetimi: useradd, usermod, passwd, sudo, PAM
Linux'ta kullanıcı hesabı nasıl oluşturulur ve yönetilir? useradd, usermod, userdel, groupadd komutları ve sudo yetkisi verme ile Linux kullanıcı yönetimi rehberi.
Linux Kullanıcı ve Grup Yönetimi: useradd, usermod, passwd, sudo, PAM
Yeni bir VDS aldınız, root ile içeri girdiniz; ilk doğru hareket root ile gündelik iş yapmamaktır. Linux çok kullanıcılı (multi-user) bir işletim sistemi olarak doğdu; her insan ve her servis için ayrı kullanıcı (user), ayrı grup (group) ve ayrı yetki (sudo / capabilities / ACL) vermek bir tercih değil disiplindir. Bu rehber Linux kullanıcı / grup yönetimini sysadmin gözüyle anlatıyor — /etc/passwd ve /etc/shadow dosyalarının iç yapısından useradd / usermod / passwd / chage komutlarının pratik kullanımına, visudo ile sudoers yapılandırmasından PAM (Pluggable Authentication Modules) ile parola politikası ve hesap kilitleme kurallarına, oradan POSIX ACL, capabilities ve kurumsal SSSD / FreeIPA / LDAP entegrasyonuna kadar uçtan uca.
Buyukweb perspektifi: 17+ yıldır Bursa Tier 3 veri merkezinde VDS, hosting ve dedicated sunuyoruz. VDS paketlerinde root erişim sizde ve unmanaged — kullanıcı disiplini sysadmin tarafı, yani size ait; biz altyapı, ağ ve veri merkezi tarafından sorumluyuz. cPanel paketlerinde paylaşımlı Linux kullanıcı yok, müşteri cPanel hesabı alır ve root yetkisi Buyukweb tarafındadır. Komutların tamamı VDS Sunucu paketlerinde geçerlidir. Destek: 0850 302 60 70.
Linux Multi-User Mantığı — UID, GID ve "Her Şey Dosya"
Linux'ta erişim kontrolü dosya seviyesindedir: her dosyanın sahibi (owner UID), grubu (group GID) ve modu (rwx) vardır. Süreçler de aynı şekilde bir UID/GID ile çalışır. Bir kullanıcı bir dosyaya erişebiliyor mu sorusu, "kullanıcının UID / GID değerleri ile dosyanın UID / GID ve modu eşleşiyor mu" sorusudur — kernel başka şey bilmez.
Bu nedenle "kullanıcı oluşturma" aslında bir satır metin eklemekten ibarettir: /etc/passwd dosyasına bir satır gelir, bir UID atanır, ev dizini açılır, parola /etc/shadow'a yazılır. Komutlar (useradd, usermod, passwd) sadece bu dosyaları doğru biçimde güncelleyen ince yardımcılardır. Aşağıda önce dosyaları, sonra komutları, sonra politikayı (sudo / PAM / ACL) sırayla işleyeceğiz.
Hesap Dosyaları — /etc/passwd, /etc/shadow, /etc/group
/etc/passwd (world-readable, 7 alan)
root:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
alperen:x:1000:1000:Alperen Karayilan,,,:/home/alperen:/bin/bash
Alanlar sırayla: kullanıcı adı, parola alanı (her zaman x — gerçek hash /etc/shadow'da), UID, birincil (primary) GID, GECOS (ad soyad, ofis, telefon — virgülle ayrılır), ev dizini, giriş kabuğu (shell). Dosya 0644 modunda — yani herkes okuyabilir; içinde parola tutulmaması bu yüzden önemli. /usr/sbin/nologin ya da /bin/false shell'i olan servis kullanıcıları interaktif giriş yapamaz; sadece arkaplan servisi çalıştırmak için var.
/etc/shadow (root-only, parola hash + yaş)
alperen:$6$saltsalt$hashhashhash...:19850:0:90:7:14::
Dokuz alan: kullanıcı, şifrelenmiş parola ($6$ SHA-512, $y$ yescrypt — 2026 modern Debian / Ubuntu varsayılanı, ! veya * = kilitli), son değişiklik (epoch'tan gün sayısı), min gün (parolayı tekrar değiştirmeden önce beklenecek), max gün (parolanın geçerlilik süresi), warn gün (bitime şu kadar gün kala uyar), inactive gün (parola süresi dolduktan sonra kaç gün giriş izin verilir), expire gün (hesabın tamamen kilitlendiği gün) ve rezerve alan. Dosya 0640 modunda root + shadow grubu okur; sıradan kullanıcı göremez — getent shadow alperen çağrısı boş döner.
Tuzak:
/etc/shadowmodu yanlışlıkla0644olarak değişmişse parola hash'lerini herkes okur —john/hashcatile brute-force dakikalar sürer. Hemenchmod 0640 /etc/shadow && chown root:shadow /etc/shadow.
/etc/group ve /etc/gshadow
sudo:x:27:alperen,deploy
www-data:x:33:
docker:x:998:alperen
Dört alan: grup adı, parola yer tutucu (her zaman x — grup parolası /etc/gshadow'da, nadiren kullanılır), GID ve virgülle ayrılmış üye listesi. Grup parolası newgrp ile geçici primary grup değişimi için tasarlandı, modern pratikte hemen hemen ölü; /etc/gshadow çoğu sistemde sadece şema bütünlüğü için var.
/etc/login.defs ve /etc/default/useradd
/etc/login.defs sistem genel varsayılanları tutar: UID_MIN 1000, UID_MAX 60000, PASS_MAX_DAYS 99999 (parola asla bitmez — pratikte 90 yapın), PASS_MIN_LEN 8, UMASK 022, ENCRYPT_METHOD SHA512 ya da YESCRYPT. useradd çağrıldığında bu dosyadan değerleri okur. Debian / Ubuntu'da bir de /etc/adduser.conf (interaktif adduser wrapper'ı için) ve /etc/default/useradd (varsayılan shell, ev dizini öneki, skel dizini) vardır.
/etc/skel — Yeni Kullanıcı İskeleti
useradd -m ile ev dizini oluştuğunda /etc/skel/ altındaki tüm dosyalar yeni kullanıcının home'una kopyalanır. .bashrc, .profile, .bash_logout, kurumsal ~/.ssh/authorized_keys şablonu, varsayılan .vimrc — buraya koyduğunuz her şey gelecekteki tüm kullanıcılarda otomatik gelir.
UID / GID Numara Alanları — Kim Hangi Aralıkta?
| Aralık | Anlam |
|---|---|
| 0 | root — süper kullanıcı, tek ve sabit |
| 1 – 99 | Tarihsel sistem hesapları (daemon, bin, sys, sync) |
| 100 – 999 | Dağıtım paketlerinin oluşturduğu sistem kullanıcıları (www-data, nginx, postgres, mysql) |
| 1000 – 60000 | İnsan kullanıcılar — useradd ön tanımlı bu aralığı kullanır |
| 65534 | nobody / nogroup — NFS root squash, anonim |
| 65535 | -1 yer tutucu, "kullanma" |
| > 60000 | Container namespace, LDAP, AD entegrasyonlu büyük dizinler |
GID için de aynı mantık geçerli. Bir kullanıcı oluşturulurken useradd UID_MIN'den (varsayılan 1000) başlayıp boş ilk numarayı verir. İki kullanıcıya aynı UID'yi atamayın — Linux kontrol etmez ama dosya sahipliği birbirine karışır, audit log'da kim kim olduğu belirsizleşir.
Kullanıcı Yönetimi Komutları — Kapsamlı Referans
useradd — Düşük Seviye, Her Dağıtım
# Tipik insan kullanici: ev dizini olustur, bash shell, sudo grubuna ek
useradd -m -s /bin/bash -G sudo,docker -c "Alperen Karayilan" alperen
passwd alperen # parola interaktif sor
# Servis kullanicisi (login yok, ev dizini yok)
useradd -r -s /usr/sbin/nologin -d /nonexistent -U deployd
# Belirli UID/GID + ozel home
useradd -m -u 2001 -g developers -s /bin/zsh -d /srv/dev/buse buse
Önemli flag'ler: -m ev dizini oluştur ve /etc/skel kopyala, -M ev dizini oluşturma, -s shell, -G grup1,grup2 ek (secondary) grup listesi, -g primary grup (yoksa kullanıcı adıyla aynı grup oluşturulur), -u UID, -d özel ev dizini yolu, -c GECOS açıklama, -r sistem hesabı (UID < 1000), -e YYYY-MM-DD hesabın otomatik kilitleneceği tarih, -K UID_MIN=2000 /etc/login.defs değerini geçersiz kıl, -D varsayılanları görüntüle veya değiştir.
adduser — Debian / Ubuntu İnteraktif Wrapper
adduser alperen
# Adding user 'alperen' ...
# Adding new group 'alperen' (1001) ...
# Enter new UNIX password:
# Full Name []: Alperen Karayilan
# Room Number []:
# Work Phone []:
# Home Phone []:
adduser Perl yazılmış Debian özelinde bir kabuktur: useradd -m, passwd, GECOS toplama, varsayılan parola politika uygulama tek komutta. Günlük pratikte tercih edin; useradd script otomasyonunda daha öngörülebilir.
passwd — Parola Yönetimi
passwd # kendi parolam
passwd alperen # baska kullanici (root yetkisi)
passwd -S alperen # status: locked / passworded / expired
passwd -l alperen # kilitle (hash basina !)
passwd -u alperen # ac
passwd -e alperen # ilk girise parola degisimi zorla
passwd -d alperen # parolasiz hesap (TEHLIKELI — sadece SSH-key-only)
passwd -n 1 -x 90 -w 7 alperen # min 1 / max 90 / warn 7 gun
Servis hesaplarını parolasız bırakıp /usr/sbin/nologin shell vermek doğru ve yaygın kalıp: parola brute-force vektörünü kaldırır.
chage — Parola Yaş Politikası
chage -l alperen
# Last password change : May 09, 2026
# Password expires : Aug 07, 2026
# Password inactive : Aug 21, 2026
# Account expires : never
# Minimum days between change : 1
# Maximum days between change : 90
# Warning before expiration : 7
chage -M 90 -m 1 -W 14 -I 14 -E 2026-12-31 alperen
Flag'ler: -M parola maksimum geçerlilik (gün), -m minimum (parolayı tekrar değiştirmeden önce beklenecek), -W uyarı süresi, -I inactive (parola bittikten sonra giriş şansı), -E hesabın tamamen kapanacağı tarih, -d 0 ilk girişte parola değişimi zorla. Kurumsal uyumluluk (PCI-DSS, ISO 27001) için -M 90 -W 7 rutindir, NIST SP 800-63B (2017 sonrası) ise uzun parola önceliği savunuyor — sızıntı kanıtı yoksa zorlayıcı periyodik değişim yerine uzun parola + MFA.
usermod — Var Olan Hesabı Düzenle
usermod -l alperen.k alperen # kullanici adi degisimi (login)
usermod -aG docker,redis alperen # EK gruplara ekle (-a KRITIK; yoksa overwrite)
usermod -G docker,redis alperen # YANLIS — diger ek gruplari siler
usermod -g developers alperen # primary grup degisimi
usermod -s /usr/bin/zsh alperen # shell degisimi
usermod -d /srv/alperen -m alperen # home tasimasi (-m mevcut iceriği tasi)
usermod -L alperen # lock (passwd -l ile ayni)
usermod -U alperen # unlock
usermod -e 2026-12-31 alperen # hesap son kullanim
usermod -e "" alperen # hesap son kullanim kaldir
En kritik komut hatası:
usermod -G yeni_grup alperen(a olmadan) mevcut tüm ek grupları siler, sadeceyeni_grupkalır.docker,sudo,wheelgrup üyeliği yiter — sunucu yönetiminden düşersiniz. Her zaman-aGyazın.
userdel — Hesabı Sil
userdel alperen # hesap + grup kaydi sil, home korur
userdel -r alperen # home + mail spool da sil
userdel -f alperen # halen login olsa bile zorla (process oldurmez)
Pratik akış: önce pkill -u alperen ile süreçleri öldür, userdel -r alperen ile hesabı + home'u sil, son olarak find / -nouser 2>/dev/null ile UID artığı kalan dosyaları yakala (yedek alıp chown ile yeni sahibe geçir).
id, groups, getent — Kim Kim?
id alperen
# uid=1000(alperen) gid=1000(alperen) groups=1000(alperen),27(sudo),998(docker)
groups alperen # sadece grup listesi
getent passwd alperen # /etc/passwd + LDAP + SSSD birlestirilmis
getent group sudo
getent shadow alperen # root + shadow grubu
finger alperen # tam profil (paket: finger)
getent "Name Service Switch" katmanını okur — /etc/passwd'in yanı sıra LDAP, SSSD, Kerberos kayıtlarını da getirir. SSSD entegrasyonlu sunucuda cat /etc/passwd | grep buse ile bulamadığınız kullanıcıyı getent passwd buse bulur.
who, w, last, lastlog — Kim Ne Yapıyor?
whoami # ben kimim (efektif UID)
who # aktif tty / pts oturumlari
w # aktif kullanicilar + cpu + komut
last -n 20 # /var/log/wtmp son 20 giris
last -F | head # tam tarih formatinda
lastb # /var/log/btmp basarisiz girisler
lastlog # her kullanicinin son girisi
Forensik gerektiğinde ilk bakacağınız komutlar bunlar: last, lastb ve auth.log.
Grup Yönetimi — Primary vs Secondary
Bir kullanıcının primary (birincil) grubu /etc/passwd'in 4. alanındaki GID'dir; oluşturduğu dosyalar varsayılan olarak bu grubun adına ait olur. Secondary (ek) gruplar /etc/group içinde üye listesinde adınızın geçtiği gruplardır; bu gruplara ait dosyalara erişim verir.
groupadd developers # GID otomatik
groupadd -g 5000 developers # GID belirle
groupadd -r dockerd # sistem grubu
groupmod -n dev developers # ad degisimi
groupmod -g 5500 dev # GID degisimi (UYARI: dosya GID'i otomatik degismez)
groupdel dev # sil (kullanici primary grubu olarak duruyorsa silmez)
gpasswd -a alperen dev # gruba ekle
gpasswd -d alperen dev # cikar
gpasswd -M alperen,buse,deploy dev # tam uye listesini ata (overwrite)
gpasswd -A alperen dev # alperen grubun admini (digerlerini ekleyip cikarabilir)
newgrp dev # gecici primary grup degisimi (alt shell acar)
sg dev -c "umask 002 && touch payla.sik" # tek komut icin grup degis
Yaygın hata:
groupmod -g 5500 devçalıştırınca/etc/groupgüncellenir ama disk üzerindeki eski 5000 GID'li dosyaların grubu otomatik değişmez. Sonradanfind / -gid 5000 -exec chgrp dev {} +ile düzeltin; yoksa "grup yazma yetkim var ama yazamıyorum" gizemi yaşarsınız.
Rol Bazlı Grup Modeli (Pratik)
Tek tek kullanıcıya yetki vermek yerine rol grupları oluşturun, kullanıcıları rolüne göre gruba ekleyin:
groupadd webdev # nginx config + /var/www erisimi
groupadd dbadmin # postgres + mysql config
groupadd deploy # CI/CD push hesaplari
groupadd sysop # sudo full
usermod -aG webdev,deploy alperen
usermod -aG dbadmin buse
Sonradan "stajyer geldi, nginx görsün ama deploy etmesin" derseniz usermod -aG webdev stajyer — tek satır.
sudo + /etc/sudoers + visudo — Root'a Geçmeden Root Olmak
sudo belirli komutları belirli kullanıcılar adına çalıştırmaya izin verir; her kullanım kullanıcının kendi parolası (default) ile doğrulanır ve /var/log/auth.log (Debian) ya da /var/log/secure (RHEL) içinde audit edilir. Root parolasını paylaşmak yerine sudo verin — kim ne yaptı izlenir, biri ayrıldığında sadece o hesabı kaldırırsınız.
visudo — Asla Doğrudan Düzenlemeyin
visudo # /etc/sudoers ana dosya
visudo -f /etc/sudoers.d/buyukweb-ops # modulerlik icin
visudo dosyayı kilitler, kaydetmeden önce syntax check yapar. Doğrudan vim /etc/sudoers açıp hata bırakırsanız sudo komutu çalışmaz hale gelir; tek root oturumunuz da kapalıysa konsol erişimine düşersiniz. Buyukweb VDS'lerde my.buyukweb.com panelinden VNC / KVM konsol açabilirsiniz, ama visudo ile bu kazayı en başta önleyin.
Sudoers Syntax
# kullanici HOST = (RUNAS:RUNGRP) NOPASSWD: KOMUTLAR
alperen ALL = (ALL:ALL) ALL # full root
%sudo ALL = (ALL:ALL) ALL # sudo grubu uyeleri
%wheel ALL = (ALL) ALL # RHEL wheel grubu
deploy ALL = (www-data) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/systemctl reload nginx
buse ALL = NOPASSWD: /usr/bin/apt update, /usr/bin/apt upgrade -y
backup ALL = NOPASSWD: /usr/bin/rsync --server*
# Cmnd_Alias + User_Alias ile gruplama
Cmnd_Alias NGINX = /usr/bin/systemctl restart nginx, /usr/bin/systemctl reload nginx
Cmnd_Alias DB = /usr/bin/systemctl restart postgresql
User_Alias OPS = alperen, buse
OPS ALL = NOPASSWD: NGINX, DB
Anahtarlar: ALL her şey, NOPASSWD: parola sorma, PASSWD: (varsayılan), RUNAS hangi kullanıcı olarak çalıştırılabilir ((www-data) → sudo -u www-data ...), RUNGRP hangi grup olarak. Komutun mutlak yolunu yazın — systemctl yerine /usr/bin/systemctl; aksi halde kullanıcı PATH oynatarak başka şey çalıştırabilir.
sudo Günlük Komutları
sudo -l # benim sudo izinlerim
sudo -l -U alperen # bir baska kullanicininki (root yetkisi)
sudo -i # root login shell
sudo -s # root non-login shell
sudo -u www-data ls /var/www # baska kullanici olarak
sudo -k # parola onbellegini sifirla
sudo -v # parola onbellegini uzat
sudo varsayılan olarak parolayı 5 dakika önbellekler (tty başına); Defaults timestamp_timeout=15 ile /etc/sudoers içinde değiştirilebilir.
sudo Audit Log
# Debian/Ubuntu
grep sudo /var/log/auth.log
# RHEL/AlmaLinux
grep sudo /var/log/secure
# Tum sudo komutlari ayri dosyaya
# /etc/sudoers icine ekle:
Defaults logfile=/var/log/sudo.log
PAM — Pluggable Authentication Modules
PAM, "kim Linux'a nasıl giriyor" sorusunun tek soyutlama katmanıdır. login, sshd, sudo, su, gdm, cockpit hepsi PAM API'sini çağırır; PAM kim olduğunu, neyi nasıl kontrol edeceğini /etc/pam.d/ altındaki servis dosyalarından okur. Dosyaları değiştirmeden parola politikası, MFA, hesap kilitleme ve LDAP entegrasyonu eklemek mümkündür.
PAM Dosya Yapısı
ls /etc/pam.d/
# common-auth common-account common-password common-session
# login sshd sudo su cron passwd ...
Her servis dosyası şu satır biçimine sahip:
# type control module args
auth required pam_unix.so nullok
auth required pam_faillock.so preauth silent deny=5 unlock_time=900
account required pam_unix.so
password requisite pam_pwquality.so retry=3 minlen=12
session optional pam_motd.so
type: auth (kim olduğunu kanıtla), account (hesap geçerli mi — süresi, kilit), password (parola değiştirme), session (oturum açma / kapama görevleri — log, kota, motd).
control: required (başarısızsa devam et ama sonuç fail), requisite (başarısızsa anında fail), sufficient (başarılıysa stack biter, devam etme), optional (sonuca etki etmez).
module: pam_unix.so (klasik /etc/shadow), pam_faillock.so (RHEL hesap kilitleme), pam_tally2.so (eski Debian — Debian 12+'da pam_faillock'a geçti), pam_pwquality.so (parola kalite), pam_google_authenticator.so (TOTP MFA — ayrıntılı kurulum için SSH 2FA yazısı), pam_sss.so (SSSD).
args: modüle özel parametreler.
pam_faillock — Hesap Kilitleme Politikası
# /etc/pam.d/common-auth (Debian 12) veya /etc/pam.d/system-auth (RHEL)
auth required pam_faillock.so preauth silent deny=5 unlock_time=900 fail_interval=300
auth [success=1 default=bad] pam_unix.so
auth [default=die] pam_faillock.so authfail deny=5 unlock_time=900
auth sufficient pam_faillock.so authsucc
5 dakikada 5 başarısız giriş = 15 dakika kilit. Kontrol komutları: faillock --user alperen (durum), faillock --user alperen --reset (sıfırla). SSH brute-force karşısında fail2ban ile birlikte iki katman: PAM her sunucuda lokal, fail2ban log + IP ban.
pam_pwquality — Parola Kalite
# /etc/security/pwquality.conf
minlen = 12
dcredit = -1 # en az 1 rakam (negatif = "en az")
ucredit = -1 # en az 1 buyuk harf
lcredit = -1 # en az 1 kucuk harf
ocredit = -1 # en az 1 ozel karakter
minclass = 3 # en az 3 sinif (rakam/harf/ozel/buyuk)
maxrepeat = 3 # ust uste ayni karakter
maxsequence = 3 # ardisik (1234 / abcd)
gecoscheck = 1 # ad soyad icermesin
dictcheck = 1 # sozluk kelimesi olmasin
retry = 3 # yanlis girise tekrar
enforce_for_root # root'a da uygula
NIST SP 800-63B yaklaşımı: minlen 12+, karmaşıklık zorlaması yerine bilinen sızıntı listesi (HaveIBeenPwned API ya da yerel hash listesi) kontrolü daha etkili. pam_pwquality 1.4.5+ badwords ve enforce_for_root parametreleriyle bu yönde gelişiyor; uzun passphrase + MFA günümüzde altın standart.
pam_google_authenticator — TOTP MFA
SSH'a 2FA eklemek: kullanıcı google-authenticator komutunu bir kez çalıştırır, QR kodu telefonuna tarar, /etc/pam.d/sshd içine auth required pam_google_authenticator.so ekler, sshd_config içinde ChallengeResponseAuthentication yes ve AuthenticationMethods publickey,keyboard-interactive yapar. Detaylı kurulum SSH 2FA Google Authenticator TOTP yazısında.
POSIX ACL — chmod Yetmediğinde
Klasik rwx üç paydaş (owner / group / others) ile sınırlı. Birden çok kullanıcıya farklı yetki vermek gerekirse POSIX ACL (Access Control Lists) çözüm. Dosya sistemi acl mount seçeneği ile (modern ext4 / xfs'te varsayılan):
mount | grep acl # acl aktif mi?
tune2fs -l /dev/sda1 | grep -i 'default mount options'
# ACL komutlari
getfacl /srv/proje # mevcut ACL
setfacl -m u:alperen:rwx /srv/proje # alperen rwx
setfacl -m u:buse:r-x /srv/proje # buse okur, calistirir
setfacl -m g:webdev:rwx /srv/proje # webdev grubu rwx
setfacl -m o::--- /srv/proje # digerleri yok
setfacl -d -m g:webdev:rwx /srv/proje # default ACL — alt dosyalara miras
setfacl -x u:buse /srv/proje # buse erisimini kaldir
setfacl -b /srv/proje # tum ACL'leri kaldir, klasik chmod'a don
Pratik: Bir paylaşılan dev klasöründe webdev grubuna yazma yetkisi verip alt klasörlere otomatik miras almak için default ACL (
-d) kullanın. Yoksa her yeni klasördechmodtekrarı yaşarsınız.
Capabilities — Root Yetkisini Parçalı Verme
Bazen tek bir yetki için sudo gereksiz: Node.js'in 80 portunu dinlemesi normalde root ister, ama tek istediği CAP_NET_BIND_SERVICE. setcap ile binary'ye bu yetkiyi gömün:
setcap 'cap_net_bind_service=+ep' /usr/bin/node # node 80'i root olmadan dinler
setcap 'cap_net_raw=+ep' /usr/bin/ping # ping (zaten varsayilan)
setcap 'cap_dac_read_search=+ep' /usr/bin/tar # tum dosyalari okur ama yazmaz
getcap /usr/bin/node
setcap -r /usr/bin/node # kaldir
Capabilities listesi: cap_net_bind_service, cap_net_raw (ICMP), cap_sys_admin (geniş — sudo'ya yakın, dikkat), cap_setuid, cap_chown, cap_dac_override, cap_kill. man capabilities ile 40+ yetkiyi görün.
Uyarı:
setcapbinary'yi değiştirirse silinir;apt upgradesonrasıgetcapile kontrol edip gerekirse tekrar uygulayın. Idempotent script'leri/etc/post-update.shbenzeri bir hook'ta çalıştırın.
Merkezi Kimlik — LDAP, SSSD, FreeIPA
Tek VDS'te yerel kullanıcı yeterli; 5-10 sunucudan sonra her sunucuda ayrı useradd çalıştırmak işkenceye dönüşür. Çözüm: kullanıcıyı merkezi bir dizinde tutmak.
OpenLDAP — açık kaynak LDAP dizin sunucusu; kullanıcı / grup şemasını saklar. Sunucu slapd, istemci ldap-utils.
SSSD (System Security Services Daemon) — Linux istemcide LDAP / Kerberos / Active Directory bağlantılarını cache'leyen, NSS + PAM entegrasyonu sağlayan modern daemon. Eski nslcd'nin yerini aldı.
FreeIPA — Linux dünyasının "Active Directory karşılığı": OpenLDAP + MIT Kerberos + BIND DNS + Dogtag CA tek paket. Sunucuda ipa-server-install, istemcide ipa-client-install — kullanıcı / grup / sudo kuralı / SSH key / sertifika tek dizinde.
Active Directory entegrasyonu — Linux sunucuyu Windows AD'ye join etmek için realmd + sssd + adcli kombinasyonu standart. AD kullanıcıları Linux sunucuda olduğu gibi giriş yapar, sudoers AD grubuna verilebilir.
# Tipik SSSD + AD join (AlmaLinux 9)
dnf install -y realmd sssd sssd-tools adcli oddjob oddjob-mkhomedir samba-common-tools krb5-workstation
realm discover buyukweb.local
realm join -U [email protected] buyukweb.local
realm permit -g '[email protected]'
Sonrası: id [email protected] → AD'den gelir, /home/[email protected] otomatik oluşur (oddjob-mkhomedir sayesinde), sudo kuralı /etc/sudoers.d/sysadmins dosyasında %[email protected] ALL=(ALL) ALL. Buyukweb müşterisi olarak kurumsal kimlik ihtiyacınız varsa VDS Sunucu üzerinde FreeIPA / SSSD kurulumu sysadmin tarafıdır; veri merkezi tarafı altyapı sağlar.
Buyukweb pratik: 1-3 VDS'lik küçük takımlar için merkezi dizin gereksiz karmaşadır; yerel kullanıcı + SSH key + paylaşılan deploy hesabı yeterli. 10+ sunuculu kurumsal kurguda SSSD + FreeIPA / AD geri dönüşü hızlanır.
Yeni VDS Kurulum Akışı — Buyukweb Senaryosu
Sıfırdan VDS aldıktan sonra ilk 10 dakika:
# 1) Root ile gir, sistem guncelle
apt update && apt upgrade -y # Debian/Ubuntu
dnf upgrade -y # AlmaLinux/Rocky
# 2) Sysadmin kullanicisi olustur
adduser sysop # adduser interaktif Debian/Ubuntu
useradd -m -s /bin/bash sysop && passwd sysop # RHEL
usermod -aG sudo sysop # Debian/Ubuntu
usermod -aG wheel sysop # RHEL
# 3) SSH key kopyala
mkdir -p /home/sysop/.ssh
cp ~/.ssh/authorized_keys /home/sysop/.ssh/
chown -R sysop:sysop /home/sysop/.ssh
chmod 700 /home/sysop/.ssh && chmod 600 /home/sysop/.ssh/authorized_keys
# 4) Yeni hesapla giris dene (ikinci terminal — root oturumu acik kalsin)
ssh sysop@vds-ip 'whoami && sudo whoami'
# 5) Root SSH'i kapat
sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl reload sshd
# 6) Deploy kullanicisi (CI/CD push icin, sudosuz)
useradd -m -s /bin/bash deploy
mkdir -p /home/deploy/.ssh && chown deploy:deploy /home/deploy/.ssh
echo "ci-public-key-content" > /home/deploy/.ssh/authorized_keys
chmod 700 /home/deploy/.ssh && chmod 600 /home/deploy/.ssh/authorized_keys
# 7) Servis kullanicilari paket kurulumunda gelir (www-data, postgres, redis)
Üç hesap modeli:
sysop— insan sysadmin, sudo, SSH-key, MFA opsiyonel.deploy— CI/CD push hesabı, sudo yok, sadece kendi servisini yönetir.servis kullanıcıları(www-data, postgres) —/usr/sbin/nologin, parolasız, sadece paket tarafından kullanılır.
Güvenlik En İyi Uygulamaları — Hızlı Çek Listesi
- Root SSH login kapalı (
PermitRootLogin no). - Parola değil SSH key (
PasswordAuthentication no). - sudo grubu sınırlı:
sudo(Debian) /wheel(RHEL) içinde sadece sysadmin hesapları. - NOPASSWD sadece otomasyon için, insan hesabında değil; otomasyon hesabı zaten interaktif login yapmaz.
- Audit log
auth.log/secureLoki / Graylog / Wazuh'a gönder. - PAM faillock + fail2ban iki katmanlı brute-force koruması.
- Parola politika
pam_pwqualityminlen 12+, NIST 800-63B yaklaşımı. - MFA kritik hesaplarda TOTP (Google Authenticator) ya da hardware key (FIDO2).
- Dev / prod kullanıcı ayrımı — staging sunucuda
deploy-staging, prod'dadeploy-prod, paylaşma. - Hesap yaş takibi
chage -lile 6 ayda bir tara — ayrılan çalışanın hesabı duruyor mu? - find /etc -name "*.bak" -mtime -7
/etc/passwd//etc/shadowyedeklerini izle, yetkisiz okuma izi.
En Sık Yapılan 7 Hata
usermod -G(a olmadan) — mevcut ek grupları siler. Hep-aG.userdel(-r olmadan) — home + mail spool diskte kalır, UID artığı.- Aynı UID iki kullanıcıya —
-u 1000ile zorlanırsa kontrol yok; dosya sahipliği karışır. /etc/shadowmodu 0644 — parola hash'leri herkese açık;johnsaatlerle anahtarı kırar.- visudo yerine doğrudan vim — syntax hatası sudo'yu kilitler; konsol erişimi gerekir.
NOPASSWD: ALL— sudo audit hâlâ var ama parola katmanı yok; saldırgan sudo grup üyeliğini ele geçirdi mi her şey biter.- rsync sonrası chown kayıp —
rsync -aUID/GID korur, ama hedefte aynı UID başka kullanıcıya aitse dosyalar onun olur.--numeric-idsile UID/GID sayıyı koru; sonrasıgetent passwdile eşleştir.
Sıkça Sorulan Sorular
useradd ile adduser arasındaki fark ne?
useradd her Linux dağıtımında olan düşük seviye komuttur — bayrak vermezseniz ev dizini bile oluşturmaz. adduser Debian / Ubuntu özelinde bir Perl wrapper'dır: useradd -m, passwd, GECOS toplama, default shell vb. işleri tek interaktif komutta yapar. Günlük el ile kullanım için adduser, otomasyon / Ansible / script'lerde useradd tercih edin.
usermod -G ile usermod -aG arasındaki fark hayati mi?
Hayati. -G ek grup listesini overwrite eder — yani usermod -G docker alperen yazarsanız alperen artık sadece docker grubunda; sudo, wheel, www-data ne varsa uçar. -aG ise append yapar, mevcut üyelikleri korur. Her zaman -aG. Bir saniyelik dalgınlık sysadmin erişiminizi tek satırda yok eder.
/etc/shadow neden world-readable değil, parola hash'ler zaten şifreli?
Hash şifreli ama brute-force / dictionary saldırısına açık. SHA-512 hash bile modern GPU'da saniyede milyarlarca deneme alır; zayıf parolalar dakikalar içinde kırılır. yescrypt / argon2 daha dirençli ama yine de hash'leri saldırganın eline vermek anlamsız. /etc/shadow her zaman 0640 root:shadow; /etc/passwd ise GECOS dahil her şeyi saklamadığı için 0644 kalır.
sudo yerine su - ile root'a geçmek neden tehlikeli?
su - root parolasını ister; bu parolayı paylaşan herkes interaktif root olur. Kim ne yaptı izlemek için /var/log/auth.log yeter mi? Hayır — root komutu kim verdi ayırt edilemez. sudo her kullanıcının kendi parolasıyla doğrular ve komutu kullanıcı adıyla loglar. Modern pratikte root parolasını kimse bilmez (passwd -l root), tüm root görevleri sudo üzerinden geçer.
PAM pam_pwquality ayarlarım root'a uygulanıyor mu?
Varsayılan hayır. pwquality.conf içine enforce_for_root ekleyene kadar root parolasını 12345 koyabilirsiniz. Production'da enforce_for_root açın; root yine bypass edebilir (passwd --force veya doğrudan chpasswd ile shadow yazımı) ama "şifre 1 karakter, kabul et" tarzı kazaları engellersiniz. Asıl güvenlik root SSH disable + sudo + MFA üçlüsü.
Kullanıcıyı silmeden geçici olarak nasıl devre dışı bırakırım?
İki yaygın yol: usermod -L alperen (parola hash'ini ! ile maskeler — sadece parola login için) ya da usermod -e 1 (hesap son kullanım tarihini epoch'tan 1. güne ayarlar — tüm girişler reddedilir, SSH-key dahil). Eğer SSH-key kullanıyorsa sadece -L yetmez; chage -E 1 alperen ya da /home/alperen/.ssh/authorized_keys taşıyın. Geri açmak için usermod -U alperen && chage -E -1 alperen.
Buyukweb cPanel paketinde Linux kullanıcısı oluşturabilir miyim?
Hayır — paylaşımlı cPanel paketinde müşteri root değildir; her cPanel hesabı tek bir Linux kullanıcısına denk gelir ve onun shell erişimi yoktur. Linux kullanıcı / grup / sudo yönetimi root erişim gerektirir ve VDS Sunucu ya da Fiziksel Dedicated paketlerinde mümkündür. cPanel paketinin avantajı, kullanıcı / grup / firewall / SSL gibi sysadmin işlerinin Buyukweb tarafından yönetilmesidir.
Sonuç
Linux kullanıcı yönetimi yüzeyde useradd komutu, gerçekte ise dosya izinleri, sudo politikası, PAM modülleri, ACL, capabilities ve kurumsal dizin entegrasyonunu kapsayan tam bir güvenlik katmanıdır. Sysadmin pratiğinin kalbinde minimum yetki prensibi yatar: her insan kendi hesabıyla, her servis kendi kullanıcısıyla, her komut izlenebilir biçimde. Sırasıyla /etc/passwd ve /etc/shadow yapısını öğrenin, useradd / usermod / passwd / chage flag'lerini ezberleyin, -aG refleksini kasınıza yerleştirin, visudo ile sudoers'a dokunun, PAM ile parola politikasını ve hesap kilitlemeyi katmanlayın, ACL ile çoklu kullanıcı paylaşımını çözün, ölçek geldikçe SSSD / FreeIPA'ya geçin.
Buyukweb E5-V4 VDS (₺250/ay başlangıç) Bursa Tier 3 veri merkezinde root erişim, KVM konsol ve L3+L4+L7 DDoS koruması ile başlangıç için ekonomik; kurumsal yük için VDS Sunucu ailesi ölçeklenir. Yönetilen ortam isteyenler için cPanel Web Hosting tarafımızdan sysadmin edilir. 7/24 Türkçe destek: 0850 302 60 70.
İlgili Buyukweb Hizmetleri
- VDS Sunucu — tüm VDS paketleri, root erişim, KVM
- E5-V4 VDS — ekonomik başlangıç, ₺250/ay
- Linux Web Hosting — yönetilen Linux paketleri
- cPanel Web Hosting — paylaşımlı, sysadmin Buyukweb tarafı
- Fiziksel Dedicated — tam donanım, kendi politikanız
Sorularınız için 0850 302 60 70 veya iletişim; Bursa Tier 3, 7/24 Türkçe destek.
Linux & Komut Satırı İlgili Hizmetlerimiz
Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin
Etiketler:

