Orta 120 dakika 25.01.2024

Linux Sistem Yönetimi: Kapsamlı Rehber

Profesyonel Linux sistem yöneticisi olmak için gereken tüm konuları kapsayan detaylı eğitim. Kullanıcı yönetimi, servis kontrolü, güvenlik ve daha fazlası.

linux admin sistem yönetimi sunucu yönetimi devops

Linux Sistem Yönetimi

1. Kullanıcı ve Grup Yönetimi

Kullanıcı Oluşturma

# Yeni kullanıcı ekle
sudo useradd -m -s /bin/bash kullanici_adi

# Şifre belirle
sudo passwd kullanici_adi

# Kullanıcı bilgilerini görüntüle
id kullanici_adi

Grup İşlemleri

# Grup oluştur
sudo groupadd grup_adi

# Kullanıcıyı gruba ekle
sudo usermod -aG grup_adi kullanici_adi

# Grupları listele
groups kullanici_adi

2. Dosya İzinleri

Temel İzinler

# İzinleri değiştir
chmod 755 dosya.sh
chmod u+x dosya.sh

# Sahipliği değiştir
chown kullanici:grup dosya.txt

# Recursive işlem
chown -R kullanici:grup /dizin

Özel İzinler

# SUID
chmod u+s /usr/bin/program

# SGID
chmod g+s /shared/directory

# Sticky Bit
chmod +t /tmp

3. Servis Yönetimi (systemd)

Systemctl Komutları

# Servisi başlat
sudo systemctl start nginx

# Servisi durdur
sudo systemctl stop nginx

# Servisi yeniden başlat
sudo systemctl restart nginx

# Servis durumunu kontrol et
sudo systemctl status nginx

# Boot'ta otomatik başlat
sudo systemctl enable nginx

# Otomatik başlatmayı kaldır
sudo systemctl disable nginx

Kendi Service Dosyanız

# /etc/systemd/system/myapp.service
[Unit]
Description=My Application
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/start.sh
Restart=always

[Install]
WantedBy=multi-user.target

4. Log Yönetimi

Önemli Log Dosyaları

# System logs
/var/log/syslog
/var/log/messages

# Authentication logs
/var/log/auth.log

# Kernel logs
/var/log/kern.log

# Application logs
/var/log/apache2/
/var/log/nginx/

Journalctl Kullanımı

# Tüm logları görüntüle
journalctl

# Son 100 satır
journalctl -n 100

# Belirli servise ait loglar
journalctl -u nginx

# Canlı takip
journalctl -f

# Belirli tarih aralığı
journalctl --since "2024-01-01" --until "2024-01-31"

5. Disk Yönetimi

Disk Kullanımı

# Disk alanını görüntüle
df -h

# Dizin boyutunu hesapla
du -sh /home/user

# En büyük dosyaları bul
du -ah /var | sort -rh | head -n 20

Mount İşlemleri

# Mount et
sudo mount /dev/sdb1 /mnt/external

# Unmount et
sudo umount /mnt/external

# /etc/fstab örneği
UUID=xxxx /data ext4 defaults 0 2

6. Ağ Yönetimi

Network Ayarları

# IP adresini görüntüle
ip addr show
ip a

# Routing tablosunu görüntüle
ip route show

# DNS ayarları
cat /etc/resolv.conf

# Bağlantıları test et
ping -c 4 google.com
traceroute google.com

Netplan Konfigürasyonu (Ubuntu)

# /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

# Uygula
sudo netplan apply

7. Güvenlik Best Practices

Firewall Kuralları

# UFW kullanımı
sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw deny 3306/tcp
sudo ufw status

SSH Güvenliği

# /etc/ssh/sshd_config
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3

8. Yedekleme Stratejileri

Rsync ile Yedekleme

# Yerel yedekleme
rsync -avz /source/ /backup/

# Uzak sunucuya yedekleme
rsync -avz -e ssh /source/ user@remote:/backup/

# Artımlı yedekleme
rsync -avz --link-dest=/backup/last /source/ /backup/new/

9. Process Yönetimi

Process Kontrolü

# Çalışan processleri listele
ps aux
ps -ef

# Belirli process'i bul
ps aux | grep nginx

# Process ağacını görüntüle
pstree

# Top ile canlı izleme
top
htop

# Process'i sonlandır
kill PID
kill -9 PID  # Zorla sonlandır

# Process'i isimle sonlandır
pkill nginx
killall nginx

Background ve Foreground İşlemler

# Arka planda çalıştır
command &

# Arka plana gönder
Ctrl+Z  # Suspend
bg      # Background'a gönder

# Foreground'a getir
fg

# Nohup ile çalıştır (terminal kapansa bile)
nohup command &

10. Cron ve Zamanlanmış Görevler

Crontab Kullanımı

# Crontab düzenle
crontab -e

# Mevcut crontab'ı görüntüle
crontab -l

# Crontab'ı sil
crontab -r

# Crontab formatı:
# * * * * * komut
# │ │ │ │ │
# │ │ │ │ └─── Haftanın günü (0-7, 0 ve 7 = Pazar)
# │ │ │ └───── Ay (1-12)
# │ │ └─────── Ayın günü (1-31)
# │ └───────── Saat (0-23)
# └─────────── Dakika (0-59)

Cron Örnekleri

# Her dakika
* * * * * /path/to/script.sh

# Her saat başı
0 * * * * /path/to/script.sh

# Her gün saat 02:00
0 2 * * * /path/to/script.sh

# Her hafta Pazartesi saat 03:00
0 3 * * 1 /path/to/script.sh

# Her ayın 1'i saat 04:00
0 4 1 * * /path/to/script.sh

# Her 5 dakikada bir
*/5 * * * * /path/to/script.sh

# Hafta içi her gün saat 09:00
0 9 * * 1-5 /path/to/script.sh

11. Paket Yönetimi

APT (Ubuntu/Debian)

# Paket listesini güncelle
sudo apt-get update

# Paket yükle
sudo apt-get install paket_adi

# Paket kaldır
sudo apt-get remove paket_adi

# Paket ve yapılandırmaları kaldır
sudo apt-get purge paket_adi

# Sistem güncellemeleri
sudo apt-get upgrade
sudo apt-get dist-upgrade

# Paket arama
apt-cache search paket_adi

# Paket bilgisi
apt-cache show paket_adi

# Temizlik
sudo apt-get clean
sudo apt-get autoremove

YUM (CentOS/RHEL)

# Paket yükle
sudo yum install paket_adi

# Paket kaldır
sudo yum remove paket_adi

# Sistem güncellemeleri
sudo yum update

# Paket arama
yum search paket_adi

# Paket bilgisi
yum info paket_adi

12. Sistem Performans İzleme

CPU ve Bellek İzleme

# CPU kullanımı
top
htop
vmstat 1

# Bellek kullanımı
free -h
free -m

# Detaylı sistem bilgisi
vmstat
iostat

# Disk I/O
iostat -x 1
iotop

Network İzleme

# Network bağlantıları
netstat -tulpn
ss -tulpn

# Network trafiği
iftop
nethogs

# Bandwidth kullanımı
vnstat
ifstat

13. Güvenlik Gelişmiş Konular

SELinux Yönetimi (CentOS/RHEL)

# SELinux durumu
getenforce

# SELinux'u geçici olarak kapat
setenforce 0

# SELinux'u aç
setenforce 1

# Kalıcı olarak kapat (önerilmez)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

AppArmor (Ubuntu)

# AppArmor durumu
sudo apparmor_status

# Profil yükle
sudo apparmor_parser -r /etc/apparmor.d/profil

# Profil kaldır
sudo apparmor_parser -R /etc/apparmor.d/profil

Güvenlik Denetimi

# Açık portları kontrol et
sudo netstat -tulpn
sudo ss -tulpn

# Şüpheli process'leri kontrol et
ps aux | grep -E "(nc|netcat|wget|curl)" | grep -v grep

# Başarısız giriş denemeleri
sudo grep "Failed password" /var/log/auth.log

# Son girişler
last
lastlog

14. Yedekleme ve Geri Yükleme

Tar ile Yedekleme

# Dizin yedekleme
tar -czf backup.tar.gz /path/to/directory

# Yedekten geri yükleme
tar -xzf backup.tar.gz -C /restore/path

# Artımlı yedekleme
tar -czf backup-$(date +%Y%m%d).tar.gz --listed-incremental=backup.snar /path

# Exclude ile yedekleme
tar -czf backup.tar.gz --exclude="*.log" --exclude="tmp/*" /path

DD ile Disk Kopyalama

# Disk kopyalama (DİKKATLİ!)
sudo dd if=/dev/sda of=/dev/sdb bs=4M status=progress

# Disk'i image olarak kaydet
sudo dd if=/dev/sda of=disk_image.img bs=4M status=progress

# Image'dan geri yükle
sudo dd if=disk_image.img of=/dev/sda bs=4M status=progress

15. Troubleshooting ve Sorun Giderme

Sistem Açılmıyor

# GRUB recovery mode
# Boot sırasında Shift'e bas
# Recovery mode seç
# Root shell'e gir

# Dosya sistemini kontrol et
fsck /dev/sda1

# Mount edilmiş dosya sistemlerini kontrol et
mount | grep -v "^/dev"

# Disk kullanımını kontrol et
df -h

Servis Çalışmıyor

# Servis durumunu kontrol et
sudo systemctl status servis_adi

# Logları kontrol et
sudo journalctl -u servis_adi -n 50

# Servisi yeniden başlat
sudo systemctl restart servis_adi

# Yapılandırma dosyasını test et
sudo nginx -t
sudo apache2ctl configtest

Network Sorunları

# Network interface'leri kontrol et
ip addr show
ifconfig

# Routing tablosunu kontrol et
ip route show
route -n

# DNS çözümlemesini test et
nslookup google.com
dig google.com

# Port dinleme kontrolü
sudo netstat -tulpn | grep :80
sudo ss -tulpn | grep :80

# Firewall kurallarını kontrol et
sudo ufw status verbose
sudo iptables -L -n -v

Pratik Senaryolar ve Projeler

Senaryo 1: Yeni Sunucu Kurulumu

1. Sistem güncellemeleri
   sudo apt-get update && sudo apt-get upgrade -y

2. Firewall yapılandırması
   sudo ufw enable
   sudo ufw allow 22/tcp
   sudo ufw allow 80/tcp
   sudo ufw allow 443/tcp

3. SSH sıkılaştırma
   - Root login'i kapat
   - Password auth'u kapat
   - SSH key kullan

4. Fail2ban kurulumu
   sudo apt-get install fail2ban

5. Monitoring araçları
   - htop kurulumu
   - Log rotation yapılandırması

6. Otomatik yedekleme
   - Cron job oluştur
   - Rsync ile uzak yedekleme

Senaryo 2: Yüksek Yük Altında Performans Optimizasyonu

1. CPU kullanımını analiz et
   - top/htop ile process'leri izle
   - Yüksek CPU kullanan process'leri tespit et

2. Bellek optimizasyonu
   - Swap kullanımını kontrol et
   - Gereksiz servisleri kapat
   - Cache ayarlarını optimize et

3. Disk I/O optimizasyonu
   - Disk kullanımını kontrol et
   - Log dosyalarını temizle
   - Disk cache ayarlarını optimize et

4. Network optimizasyonu
   - Bandwidth kullanımını izle
   - Gereksiz network servislerini kapat
   - Connection pool ayarlarını optimize et

Senaryo 3: Disaster Recovery Planı

1. Düzenli yedekleme stratejisi
   - Günlük yedeklemeler
   - Haftalık tam yedeklemeler
   - Aylık arşiv yedeklemeleri

2. Yedekleme testi
   - Yedeklerin geri yüklenebilirliğini test et
   - Recovery süresini ölç

3. Dokümantasyon
   - Sistem yapılandırmasını dokümante et
   - Recovery prosedürlerini yaz

4. Otomasyon
   - Otomatik yedekleme scriptleri
   - Monitoring ve alerting

İleri Seviye Konular

Kernel Parametreleri

# Kernel parametrelerini görüntüle
sysctl -a

# Parametre değiştir
sudo sysctl -w net.ipv4.ip_forward=1

# Kalıcı değişiklik (/etc/sysctl.conf)
net.ipv4.ip_forward=1
net.core.rmem_max=16777216
net.core.wmem_max=16777216

# Uygula
sudo sysctl -p

LVM (Logical Volume Management)

# Physical volume oluştur
sudo pvcreate /dev/sdb1

# Volume group oluştur
sudo vgcreate vg_data /dev/sdb1

# Logical volume oluştur
sudo lvcreate -L 10G -n lv_data vg_data

# Format et
sudo mkfs.ext4 /dev/vg_data/lv_data

# Mount et
sudo mount /dev/vg_data/lv_data /data

# Volume genişlet
sudo lvextend -L +5G /dev/vg_data/lv_data
sudo resize2fs /dev/vg_data/lv_data

Best Practices ve Öneriler

  • Düzenli Güncellemeler: Güvenlik yamalarını düzenli uygulayın
  • Monitoring: Sistem kaynaklarını sürekli izleyin
  • Yedekleme: Kritik verileri düzenli yedekleyin
  • Dokümantasyon: Yapılandırmaları dokümante edin
  • Güvenlik: Minimum gerekli izinleri verin
  • Log Yönetimi: Log rotation yapılandırın
  • Otomasyon: Tekrarlayan görevleri otomatikleştirin