Linux Kullanıcı ve Yetki Yönetimi: sudo ve Gruplar
Linux'ta kullanıcı oluşturma (useradd/usermod/userdel), grup yönetimi, sudo yapılandırması, SSH anahtar tabanlı kimlik doğrulama ve en az ayrıcalık ilkesi rehberi.
İçindekiler
Linux Kullanıcı ve Yetki Yönetimi: sudo ve Gruplar
Linux'ta kullanıcı ve yetki yönetimi, sunucu güvenliğinin temel taşlarından biridir. Doğru yapılandırılmış kullanıcı hesapları ve izinler, yetkisiz erişimi önler ve güvenlik ihlallerinin etkisini sınırlar. Bu rehberde Linux kullanıcı yönetimini, grup yapısını, sudo yapılandırmasını ve SSH anahtar tabanlı kimlik doğrulamayı ele alacağız.
Kullanıcı Yönetimi
Kullanıcı Oluşturma
# Temel kullanıcı oluştur
sudo useradd kullanici_adi
# Ev dizini ile kullanıcı oluştur
sudo useradd -m kullanici_adi
# Ev dizini, shell ve yorum ile
sudo useradd -m -s /bin/bash -c "Ad Soyad" kullanici_adi
# Belirli bir UID ile
sudo useradd -m -u 1500 kullanici_adi
# Birincil grup belirterek
sudo useradd -m -g www-data kullanici_adi
# Şifre belirle
sudo passwd kullanici_adi
# Kullanıcı bilgilerini görüntüle
id kullanici_adi
getent passwd kullanici_adi
Kullanıcı Düzenleme
# Kullanıcı adını değiştir
sudo usermod -l yeni_ad eski_ad
# Ev dizinini değiştir
sudo usermod -d /yeni/ev/dizini -m kullanici_adi
# Shell'i değiştir
sudo usermod -s /bin/bash kullanici_adi
# Hesabı kilitle
sudo usermod -L kullanici_adi
# Hesabı aç
sudo usermod -U kullanici_adi
# Hesap son kullanma tarihi belirle
sudo usermod -e 2025-12-31 kullanici_adi
# Şifre son kullanma tarihini zorla
sudo chage -d 0 kullanici_adi
Kullanıcı Silme
# Kullanıcıyı sil (ev dizini korunur)
sudo userdel kullanici_adi
# Kullanıcıyı ve ev dizinini sil
sudo userdel -r kullanici_adi
# Kullanıcının sahip olduğu dosyaları bul
find / -user kullanici_adi 2>/dev/null
Grup Yönetimi
# Grup oluştur
sudo groupadd gelistiriciler
# Kullanıcıyı gruba ekle
sudo usermod -aG gelistiriciler kullanici_adi
# Birden fazla gruba ekle
sudo usermod -aG grup1,grup2,grup3 kullanici_adi
# Kullanıcının gruplarını görüntüle
groups kullanici_adi
id kullanici_adi
# Gruptaki kullanıcıları listele
getent group gelistiriciler
# Kullanıcıyı gruptan çıkar
sudo gpasswd -d kullanici_adi gelistiriciler
# Grubu sil
sudo groupdel gelistiriciler
# Grup adını değiştir
sudo groupmod -n yeni_ad eski_ad
sudo Yapılandırması
Kullanıcıya sudo Yetkisi Verme
# Kullanıcıyı sudo grubuna ekle (Debian/Ubuntu)
sudo usermod -aG sudo kullanici_adi
# Kullanıcıyı wheel grubuna ekle (RHEL/CentOS)
sudo usermod -aG wheel kullanici_adi
# Değişikliği test et
su - kullanici_adi
sudo whoami # root çıktısı vermeli
sudoers Dosyası Yapılandırması
# sudoers dosyasını güvenli şekilde düzenle
sudo visudo
# /etc/sudoers içeriği
# Kullanıcıya tam sudo yetkisi
kullanici_adi ALL=(ALL:ALL) ALL
# Şifresiz sudo (dikkatli kullanın)
kullanici_adi ALL=(ALL) NOPASSWD: ALL
# Belirli komutlar için sudo
kullanici_adi ALL=(ALL) /usr/bin/systemctl, /usr/bin/apt
# Gruba sudo yetkisi
%gelistiriciler ALL=(ALL:ALL) ALL
# Belirli komutlar için şifresiz
kullanici_adi ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
# Ayrı dosya oluştur (önerilen yöntem)
sudo nano /etc/sudoers.d/kullanici_adi
# Dosya içeriği
kullanici_adi ALL=(ALL:ALL) ALL
# Dosya izinlerini ayarla
sudo chmod 440 /etc/sudoers.d/kullanici_adi
Dosya İzinleri
# İzinleri görüntüle
ls -la /dizin/
# İzin değiştir (sayısal)
chmod 755 dosya.sh # rwxr-xr-x
chmod 644 dosya.txt # rw-r--r--
chmod 600 gizli.key # rw-------
# İzin değiştir (sembolik)
chmod u+x dosya.sh # sahibine çalıştırma ekle
chmod g-w dosya.txt # gruptan yazma kaldır
chmod o-r gizli.txt # diğerlerinden okuma kaldır
# Sahipliği değiştir
chown kullanici_adi dosya.txt
chown kullanici_adi:grup dosya.txt
# Dizin ve içeriğini değiştir
chown -R kullanici_adi:grup /dizin/
# Özel izinler
chmod +s /usr/bin/program # SUID bit
chmod g+s /paylasilan/dizin # SGID bit
chmod +t /tmp # Sticky bit
SSH Anahtar Tabanlı Kimlik Doğrulama
SSH Anahtar Çifti Oluşturma
# Yerel makinede anahtar oluştur
ssh-keygen -t ed25519 -C "email@example.com"
# RSA anahtar (eski sistemler için)
ssh-keygen -t rsa -b 4096 -C "email@example.com"
# Anahtarlar ~/.ssh/ dizininde oluşturulur:
# ~/.ssh/id_ed25519 (özel anahtar)
# ~/.ssh/id_ed25519.pub (açık anahtar)
Açık Anahtarı Sunucuya Kopyalama
# ssh-copy-id ile (en kolay yöntem)
ssh-copy-id kullanici@sunucu_ip
# Manuel kopyalama
cat ~/.ssh/id_ed25519.pub | ssh kullanici@sunucu_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
# Sunucuda manuel oluşturma
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys # açık anahtarı yapıştır
chmod 600 ~/.ssh/authorized_keys
SSH Güvenlik Yapılandırması
# SSH yapılandırma dosyasını düzenle
sudo nano /etc/ssh/sshd_config
# Şifre ile girişi devre dışı bırak (anahtar kurulduktan sonra)
PasswordAuthentication no
# Root girişini devre dışı bırak
PermitRootLogin no
# Boş şifrelere izin verme
PermitEmptyPasswords no
# Maksimum giriş denemesi
MaxAuthTries 3
# Belirli kullanıcılara izin ver
AllowUsers kullanici1 kullanici2
# Belirli gruptan izin ver
AllowGroups ssh-users
# SSH servisini yeniden başlat
sudo systemctl restart sshd
# Yapılandırmayı test et (bağlantıyı kesmeden önce)
sudo sshd -t
En Az Ayrıcalık İlkesi
En az ayrıcalık ilkesi (Principle of Least Privilege), her kullanıcı ve sürecin yalnızca görevini yerine getirmek için gereken minimum izinlere sahip olması gerektiğini belirtir.
# Uygulama için özel kullanıcı oluştur (shell olmadan)
sudo useradd -r -s /usr/sbin/nologin -d /var/lib/uygulama uygulama_kullanici
# Web sunucusu için
sudo useradd -r -s /usr/sbin/nologin www-data
# Servis kullanıcısı için ev dizini oluştur
sudo mkdir -p /var/lib/uygulama
sudo chown uygulama_kullanici:uygulama_kullanici /var/lib/uygulama
sudo chmod 750 /var/lib/uygulama
# Kullanıcının hangi dosyalara erişebildiğini kontrol et
sudo -u uygulama_kullanici ls /var/lib/uygulama
Root hesabını doğrudan kullanmaktan kaçının. Her yönetici için ayrı hesap oluşturun ve sudo ile yetkilendirin. Bu sayede kim ne yaptı takip edilebilir.
Kullanıcı Aktivitesi İzleme
# Son girişleri görüntüle
last
lastlog
# Başarısız giriş denemelerini görüntüle
lastb
# Aktif kullanıcıları görüntüle
who
w
# Kullanıcının komut geçmişi
cat /home/kullanici_adi/.bash_history
# Sudo kullanımını izle
sudo grep sudo /var/log/auth.log
Sonuç
Linux kullanıcı ve yetki yönetimi, sunucu güvenliğinin temelini oluşturur. Her kullanıcıya yalnızca ihtiyaç duyduğu izinleri verin, SSH anahtar tabanlı kimlik doğrulamayı kullanın ve root erişimini kısıtlayın. Bu uygulamalar REXE sunucularınızı yetkisiz erişime karşı korur.
İlgili Makaleler
VDS Sunucuya SSH ile Bağlanma Rehberi (PuTTY & Terminal)
Linux VDS sunucunuza SSH ile bağlanma adımları: PuTTY, Terminal, anahtar tabanlı kimlik doğrulama, Path Panel firewall kuralı ve güvenlik ipuçları.
Windows VDS'e RDP ile Bağlanma ve Güvenlik Rehberi
Windows Server VDS sunucunuza Uzak Masaüstü (RDP) ile bağlanma adımları, NLA güvenlik ayarları, Path Panel firewall kuralı ve sorun giderme rehberi.
VDS Sunucu İşletim Sistemi Değiştirme Rehberi (Reinstall)
REXE panel üzerinden VDS sunucunuzun işletim sistemini değiştirme adımları, yedekleme önerileri, desteklenen Linux ve Windows Server sürümleri.