Linux Temelleri

Linux, özgür yazılım felsefesinin bir ürünü olarak 1991’de Linus Torvalds tarafından geliştirilmeye başlandığından bu yana; güvenlik, esneklik ve açık kaynak kodlu yapısıyla sistem yöneticileri, geliştiriciler ve ağ mühendislerinin vazgeçilmez tercihlerinden biri olmuştur. Modern sunucu sistemlerinin, gömülü cihazların, mobil işletim sistemlerinin (örneğin Android) ve bulut tabanlı altyapıların büyük çoğunluğu bugün Linux çekirdeği üzerinde çalışmaktadır. Bu eğitim, hem yeni başlayanlara hem de temel bilgilerini sistematik şekilde pekiştirmek isteyenlere Linux ekosistemini kapsamlı olarak tanıtan bir içerik sunar.

1. Linux’un Tarihi ve Mimarisi

1) Linux’un Ortaya Çıkışı

Linux; UNIX benzeri bir işletim sistemidir. POSIX uyumlu yapısı, çoklu görev (multitasking), çok kullanıcılı yapı (multi-user), sanal bellek yönetimi ve güçlü dosya sistemi desteği ile profesyonel sistem yönetimi için idealdir.

2) Linux Mimarisi

  • Kernel space (çekirdek düzeyi): Donanımla doğrudan etkileşim sağlar. Bellek yönetimi, I/O kontrolü, sistem çağrıları burada gerçekleşir.
  • User space (kullanıcı alanı): Uygulamalar, servisler, terminal ve komut satırı işlemleri bu katmanda yürür.

2. Dağıtımların Karşılaştırılması

Linux dağıtımları, farklı ihtiyaçlara göre optimize edilmiştir:

DağıtımTemel ÖzelliklerKullanım Alanı
DebianKararlı, konservatif güncellemelerSunucular, kritik sistemler
UbuntuKullanıcı dostu, LTS sürümleriMasaüstü, eğitim
CentOS/AlmaLinuxRed Hat uyumluKurumsal sunucular
ArchRolling release, özelleştirilebilirGeliştirici sistemleri
KaliGüvenlik araçları ön yüklüPentest, sızma testleri

3. Komut Satırı Temelleri

1) Bash ve Shell Mantığı

Linux’ta Bash (Bourne Again Shell) yaygın kullanılan kabuktur. Komutlar yorumlayıcı tarafından çalıştırılır. Shell script’ler ile otomasyon sağlanabilir.

2) Temel Komutlar

  • pwd # mevcut dizini gösterir
  • cd /etc # dizin değiştirir
  • ls -la # detaylı dosya listesi
  • touch dosya.txt # boş dosya oluşturur
  • rm -rf /tmp/* # dosya/dizin silme işlemi

4. Dosya Sistemi ve Hiyerarşi

Linux, tek kök dizin olan / altına tüm yapıyı yerleştirir.

DizinAçıklama
/etcYapılandırma dosyaları
/homeKullanıcı klasörleri
/varLoglar ve geçici dosyalar
/usrUygulama ve kütüphaneler
/bin, /sbinSistem araçları

Dosya türleri:

  • Düz dosya (-)
  • Dizin (d)
  • Bağlantı (l)
  • Özel karakter cihazı (c)
  • Blok cihaz (b)

5. Dosya ve Metin İşleme

1) Metin Görüntüleme

  • cat, less, head, tail

2) Metin Düzenleme

  • nano: Basit terminal editörü
  • vim: Gelişmiş, modlu metin editörü
  • sed: Akış yönlü düzenleme
  • awk: Veri işleme ve raporlama aracı
  • grep "error" /var/log/syslog
  • awk '{print $1, $3}' dosya.txt
  • sed 's/eski/yenisi/g' dosya.txt

6. Paket Yönetimi

Linux’ta yazılım yükleme işlemleri paket yöneticileri aracılığıyla yapılır.

Paket YöneticisiDağıtım
APT (dpkg)Debian/Ubuntu
DNF (yum)Fedora/RHEL/CentOS
pacmanArch
  • sudo apt update && sudo apt install htop
  • sudo dnf install nginx

7. Kullanıcı ve Yetki Yönetimi

1) Kullanıcı İşlemleri

  • adduser ahmet
  • passwd ahmet
  • usermod -aG sudo ahmet

2) İzin Sistemi (chmod, chown)

  • -rw-r--r-- 1 root root 1042 belge.txt
    • r: read (okuma)
    • w: write (yazma)
    • x: execute (çalıştırma)
  • chmod 755 script.sh
  • chown ahmet:ahmet belge.txt

8. Süreç (Process) ve Hizmet (Service) Yönetimi

1) Süreç İzleme

  • ps aux
  • top / htop
  • kill -9 PID

2) Systemd ile Servis Yönetimi

  • systemctl status nginx
  • systemctl restart sshd
  • systemctl enable mariadb

9. Ağ Konfigürasyonu ve Testler

1) IP Yapılandırma

  • ip a
  • nmcli d show

2) Ağ Test Komutları

  • ping google.com
  • traceroute 8.8.8.8
  • netstat -tulnp
  • ss -ltn
  • nmap localhost

3) Güvenlik Duvarı

  • ufw enable
  • ufw allow 22
  • iptables -L

10. Uygulamalı Linux Pratikleri

Eğitimde katılımcılara ayrıca aşağıdaki pratik konular öğretilir:

  • Shell script yazarak yedekleme otomasyonu
  • Cron ile zamanlanmış görevler
  • Log dosyalarının okunması ve döküm analizi
  • Temel servislerin kurulumu: Apache, MySQL, OpenSSH

11. Zamanlanmış Görevler: cron ile Otomasyon

Linux sistemlerinde belirli zamanlarda otomatik görev çalıştırmak için cron ve crontab kullanılır. Örneğin her gün saat 03:00’te yedekleme komutu çalıştırmak istersen:

crontab -e

İçerisine şu satırı ekleyebilirsin:

0 3 * * * /home/kullanici/backup.sh

Açıklama:

  • 0 3 * * * → Her gün 03:00
  • backup.sh → Komut ya da script

crontab -l # mevcut görevleri listele

Bu sistemle logları temizleyebilir, disk alanını izleyebilir, periyodik güncellemeler alabilirsin.

12. Log Yönetimi ve İzleme

Linux sistemleri olayları log dosyalarına yazar. Loglar sayesinde sistemdeki hataları, güvenlik ihlallerini ve servis durumlarını analiz edebilirsin.

Yaygın Log Dosyaları:

DosyaAçıklama
/var/log/syslogSistem mesajları (Debian/Ubuntu)
/var/log/messagesGenel sistem logları (CentOS)
/var/log/auth.logKimlik doğrulama girişimleri
/var/log/nginx/Web sunucusu logları

Komutlar;

  • tail -f /var/log/syslog
  • grep "Failed" /var/log/auth.log
  • journalctl -xe # systemd log görüntüleyici

Log analizleri, sistem yöneticiliği ve güvenlik farkındalığı için kritik öneme sahiptir.

13. Temel Yedekleme Stratejileri

Her Linux sisteminde yedekleme hayati öneme sahiptir. rsync, tar ve scp gibi araçlar kullanılarak lokal veya uzak sunuculara veri kopyalanabilir.

rsync ile Yedekleme:

rsync -avh /home/kullanici/ /mnt/backup_disk/

tar ile Arşivleme:

tar -czvf yedek.tar.gz /home/kullanici/

scp ile Uzaktan Yedekleme:

scp yedek.tar.gz kullanici@192.168.1.5:/yedekler/

Yedekleme işlemleri genellikle cron tabanlı olarak zamanlanır ve loglarla birlikte raporlanır.