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 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