LINUX'UN KİTABINI YAZIYORUZ: BAŞLANGIÇTAN USTALIĞA
"Linux Bilmeyeni Dövüyorlar Bu Piyasada"
İÇİNDEKİLER
- Giriş: Neden Linux be Abi?
- Bölüm 1: Olayın Mantığı ve Felsefesi
- Bölüm 2: Terminal ve Kabuk (Shell)
- Bölüm 3: Dosya ve Dizin İşlemleri
- Bölüm 4: Metin İşleme (Sihirbazlık)
- Bölüm 5: Kullanıcı ve Grup İşleri
- Bölüm 6: İzinler ve Tapu İşleri
- Bölüm 7: Süreçler (Processes)
- Bölüm 8: Disk ve Depolama
- Bölüm 9: Ağ İşleri (Network)
- Bölüm 10: Paket Yükleme (Market)
- Bölüm 11: Log Yönetimi
- Bölüm 12: Otomasyon (Cron)
- Bölüm 13: Yedekleme
- Bölüm 14: Performans İzleme
- Bölüm 15: Güvenlik Temelleri
- Bölüm 16: Bash Scripting (Kodlama)
- Bölüm 17: Konteynerler ve Docker
- Bölüm 19: Sorun Giderme
- Sonuç
Giriş: Neden Linux be Abi?
Şunu net bir şekilde söyleyebilirim ki Linux öğrenmek, şu bilgisayar aleminde kendine yapabileceğin en büyük kıyaklardan biri. Bugün internetin belkemiği, sunucuların alayı Linux'ta. Cebindeki Android telefonun kalbinde Linux atıyor, dünyanın en hızlı süper bilgisayarlarının tamamı Linux kullanıyor. Siber güvenlikçi mi olacaksın, sistemci mi, yoksa DevOps'çu mu? Hiç fark etmez babacım, Linux bilmeyeni dövüyorlar bu piyasada.
Bu rehberi hazırlarken kendime şunu sordum: "Hiçbir şey bilmeyen bir kardeşimizi alıp, nasıl bu işin piri yaparız?" Amacım sana kuru kuru komut ezberletmek değil; komutun arkasındaki mantığı, işlerin nasıl döndüğünü ve başın sıkışınca ne yapacağını anlatmak. Bu rehber hazırlanırken gerçekten ciddi emekler verildi, neyse hazırsan başlıyoruz.
Bölüm 1: Olayın Mantığı ve Felsefesi
1.1 Linux Nedir, Unix Nedir?
Agacım Linux dediğin aslında bir işletim sistemi çekirdeği kernel. Yani işin motoru. 1991'de Linus Torvalds diye Finlandiyalı bir öğrenci abimiz tarafından yazılıyor. Adam Unix gibi bir şey istiyor ama o zamanlar Unix lisansları ateş pahası. "Kendi göbeğimi kendim keserim arkadaş" diyor, çekirdeği yazıp açık kaynak olarak salıyor piyasaya.
Unix ise ta 1969'da Bell Labs'taki efsane abiler Ken Thompson, Dennis Ritchie tarafından yapılmıştı. Linux da babası Unix'in felsefesini aldı:
- Her şey bir dosyadır: Hard diskmiş, klavyeymiş, internet bağlantısıymış... Linux bunların hepsini dosya gibi görür, ona göre muamele eder.
- Küçük olsun, işlevsel olsun: Dev gibi hantal programlar yerine, tek bir işi mükemmel yapan ufak programları birleştirip voltran oluşturursun.
- Metin candır: Programlar birbiriyle düz metin üzerinden anlaşır, bu da işleri birbirine bağlamayı çocuk oyuncağı yapar.
1.2 Dağıtımlar
Şimdi bu Linux çekirdeğinin üstüne, paket yöneticisiydi, masaüstüydü falan ekleyip paketliyorlar, buna dağıtım yani distro diyoruz. En popülerleri şunlar:
- Debian Ailesi:
- Debian: Kaya gibi sağlamdır, sunucularda çok sevilir.
- Ubuntu: Debian'ın insan için olanı. Kullanımı kolay, hem masaüstünde hem sunucuda gideri var.
- Linux Mint: Windows'tan kaçıp gelenler için cennet, alışması çok kolay.
- Kali Linux: Hacker abilerin tercihi. Güvenlik testleri için ağzına kadar toolla dolu.
- Red Hat Ailesi:
- RHEL: Kurumsalın kralı. Paralıdır, desteği vardır, şirketler bayılır.
- CentOS / Rocky / AlmaLinux: RHEL'in bedava versiyonları. Aynısının tıpkısıdır, sunucularda çok kullanılır.
- Fedora: Yeniliklerin denendiği laboratuvar. En güncel teknolojiler önce buna gelir.
- Diğerleri:
- Arch Linux: Minimalisttir, her şeyi tek tek sen kurarsın. "Ben bu işi öğreneceğim" diyorsan birebirdir ama terletir ayıktırayım :d.
- openSUSE: Avrupalıların göz bebeği, YaST diye güzel bir yönetim aracı var.
- Gentoo: Mazoşist işi birader. Her şeyi kaynak koddan derlersin, performans manyakları sever.
1.3 Dosya Sistemi Hiyerarşisi
Linux'ta her şeyin bir yeri yurdu bellidir. Windows'taki gibi C:, D: falan yok. Tek bir kök (/) var, her şey onun altında dallanır:
Kod:
/
├── bin/ → En temel komutlar burada (ls, cp, mv, cat falan)
├── sbin/ → Yönetici komutları (fdisk, iptables gibi "yetki" isteyenler)
├── etc/ → Ayarların kalbi (tüm config dosyaları burada yatar)
├── home/ → Senin, benim evimiz (kullanıcı dosyaları: /home/ahmet)
├── root/ → Büyük patronun (root) ev dizini
├── var/ → Sürekli değişenler (loglar, mailler, veritabanları)
├── tmp/ → Çöplük (geçici dosyalar, reset atınca silinir)
├── usr/ → Kullanıcı programları ve kütüphaneler
│ ├── bin/ → Senin kurduğun programlar genelde buraya düşer
│ └── local/ → Elle derleyip kurdukların
├── opt/ → Dışarıdan gelen paket programlar
├── dev/ → Donanımlar (disk, usb, terminal hepsi dosya demiştim ya, hah işte burada)
├── proc/ → Sistemin röntgeni (çalışan süreçler, RAM bilgisi vs.)
├── mnt/ → Geçici disk bağlama noktası
├── media/ → USB takınca otomatik buraya gelir
├── boot/ → Açılış dosyaları (kernel, grub)
└── srv/ → Sunucu verileri (web sitesi dosyaları falan)
Bunu ezberlemeye kasma, kullandıkça elin alışır. Ayar yapacaksan /etc'ye, log bakacaksan /var/log'a gidersin, bitti gitti.
Bölüm 2: Terminal ve Kabuk (Shell)
2.1 Shell (Kabuk) Nedir?
Shell, seninle Linux çekirdeği arasındaki tercüman. Sen komutu yazarsın, o çekirdeğe iletir, cevabı sana getirir. Bash, Zsh, Fish gibi türleri var.
Hangi shell'deyim diye merak edersen:
Kod:
echo $SHELL
2.2 Terminal Kısayolları (Hayat Kurtarır)
Bak bunları öğrenirsen klavyede şov yaparsın:
- Ctrl + C: Çalışan komutu iptal et (imdat freni)
- Ctrl + L: Ekranı temizle
- Ctrl + A / Ctrl + E: Satır başına / sonuna git
- Ctrl + R: Geçmişte arama yap
- Tab: Otomatik tamamlama (En önemlisi bu!)
2.3 Komut Yapısı
Olayı şu: komut [seçenekler] [argümanlar]
Örnek:
Kod:
ls -la /home/ahmet
2.4 Yardım Alma (RTFM)
Takıldın mı? Hemen yardım çağır:
Kod:
man ls # Manuel sayfası (kullanma kılavuzu, biraz uzundur)
ls --help # Hızlı yardım (özet geçer)
whatis ls # Bu komut ne işe yarar tek cümleyle söyle
which python # Bu programın dosyası nerede?
Bölüm 3: Dosya ve Dizin İşlemleri
3.1 Gezinti (Navigasyon)
Kod:
pwd # Neredeyim ben? (Yolu gösterir)
cd /var/log # Işınla beni Scotty (Dizine git)
cd .. # Bir üst kata çık
cd ~ # Evime dön (Home dizini)
cd - # Bir önceki olduğun yere geri dön (çok pratiktir)
ls # Ne var ne yok dökülün
ls -lah # Detaylı, gizlileri göster, boyutları insan gibi (MB, GB) yaz
tree # Dizinleri ağaç gibi dallı budaklı göster
3.2 Oluşturma
Kod:
mkdir projeler # Klasör aç
mkdir -p a/b/c # İç içe klasör aç
touch not.txt # Boş dosya oluştur (veya tarihini güncelle)
echo "Selam" > not.txt # Dosyaya yazı yaz (eskisini siler!)
echo "Naber" >> not.txt # Dosyanın altına ekle (eskisine dokunmaz)
3.3 Kopyala, Taşı, Yok Et
Kod:
cp dosya.txt kopya.txt # Kopyala
cp -r klasör/ yeni_yer/ # Klasörü içindekilerle kopyala
mv dosya.txt yeni.txt # İsim değiştir (aslında olduğu yerde taşımaktır)
mv dosya.txt /tmp/ # Başka yere taşı
rm dosya.txt # Sil (Geri dönüşüm kutusu YOKTUR, dikkat!)
rm -r klasör/ # Klasörü sil
rm -rf klasör/ # Klasörü ve içindeki her şeyi sorusuz sualsiz sil (Aman diyim, elin titresin bunu yazarken!)
3.4 İçeriğe Bakma
Kod:
cat dosya.txt # Hepsini ekrana bas
less dosya.txt # Sayfa sayfa oku (en temizi budur, 'q' ile çıkarsın)
head dosya.txt # Sadece başını göster (ilk 10 satır)
tail dosya.txt # Sadece kuyruğunu göster (son 10 satır)
tail -f log.txt # Log dosyasını canlı takip et (log akarken izlemek için birebir)
3.5 Bağlantılar (Linkler)
Windows'taki kısayol mantığı gibi düşün:
Kod:
ln -s hedef_dosya kisayol # Soft link (Kısayol oluşturur)
3.6 Arama Tarama
Kod:
find /home -name "*.txt" # İsme göre dosya bul
find /var -size +100M # 100MB'dan büyük dosyaları bul (disk dolunca lazım olur)
locate dosya.txt # Veritabanından hızlıca bul
Bölüm 4: Metin İşleme (Sihirbazlık)
Logları didiklerken bu komutlar senin elin ayağın olacak.
4.1 grep (Samanlıkta İğne Arama)
Kod:
grep "hata" log.txt # İçinde "hata" geçen satırları getir
grep -i "hata" log.txt # Büyük küçük harf takılma
grep -r "config" /etc/ # Klasörün içindeki tüm dosyalarda ara
grep -v "info" log.txt # İçinde "info" geçenleri GETİRME (filtrele)
4.2 sed (Metin Cerrahı)
Kod:
sed 's/eski/yeni/g' dosya.txt # Dosyadaki "eski" kelimelerini "yeni" yap (ekrana basar)
sed -i 's/eski/yeni/g' dosya.txt # Dosyanın içinde kalıcı değişiklik yap
4.3 awk (İsviçre Çakısı)
Sütun sütun veri işlemek için kraldır:
Kod:
awk '{print $1}' dosya.txt # Sadece 1. sütunu yazdır
awk '{print $1, $3}' dosya.txt # 1. ve 3. sütunu yazdır
4.4 Diğer Oyuncaklar
Kod:
sort dosya.txt # Sırala
uniq dosya.txt # Tekrarlayanları temizle (önce sort lazım!)
wc -l dosya.txt # Kaç satır var say
cut -d":" -f1 /etc/passwd # Dosyayı böl ve parçayı al
history | grep "docker" # Geçmişte yazdığım docker komutunu bul
4.5 Pipe (|) ve Yönlendirme
Linux'un en büyük numarası budur. Bir komutun çıktısını al, diğerine ver:
Kod:
ls -la | grep ".txt" # Listele VE txt olanları süz
cat log.txt | grep "Error" | wc -l # Hataları bul VE say
komut > dosya.txt # Çıktıyı dosyaya yaz (eskisini siler)
komut >> dosya.txt # Çıktıyı dosyanın sonuna ekle
Bölüm 5: Kullanıcı ve Grup İşleri
5.1 Kullanıcılar
Herkesin bir kimliği (UID) ve grubu (GID) vardır. Bilgiler /etc/passwd dosyasında yatar.
5.2 Kullanıcı Yönetimi
Kod:
sudo useradd -m ahmet # Ahmet diye kullanıcı aç, evini de yap
sudo passwd ahmet # Ahmet'e şifre ver
sudo userdel -r ahmet # Ahmet'i sil, evini de başına yık
whoami # Ben kimim lan?
id # Kimlik bilgilerimi dök
5.3 Gruplar
Kod:
sudo groupadd yazilimcilar # Grup kur
sudo usermod -aG yazilimcilar ahmet # Ahmet'i gruba ekle (-aG önemli, yoksa diğer gruplardan atılır!)
5.4 Root Olmak (Sudo)
Kod:
sudo komut # Komutu patron (root) yetkisiyle çalıştır
su - # Komple root kullanıcısına geç (şifre ister)
sudo -i # Root terminaline geç
Bölüm 6: İzinler ve Tapu İşleri (Permissions)
6.1 İzin Sistemi (rwx)
Dosyalarda 3 hak vardır: r (oku), w (yaz), x (çalıştır).
Ve 3 muhatap vardır: u (sahibi), g (grubu), o (diğerleri).
6.2 chmod (İzin Ayarı)
Kod:
chmod +x script.sh # Çalıştırma izni ver (herkese)
chmod u+w dosya.txt # Sahibine yazma izni ver
chmod 755 dosya.txt # Sayısal mod (Sahip full, diğerleri okur/çalıştırır)
chmod 777 dosya.txt # Herkese her izni ver (Güvenlik açığıdır, yapma yanarsın!)
chmod 600 key.pem # Sadece ben okuyup yazayım (SSH anahtarları için şart)
6.3 chown (Tapu Devri)
Kod:
sudo chown ahmet dosya.txt # Dosyanın sahibi artık Ahmet
sudo chown ahmet:yazilimcilar dosya.txt # Sahibi Ahmet, grubu Yazılımcılar
sudo chown -R ahmet klasor/ # Klasörün içindeki her şeyi Ahmet'e ver
Bölüm 7: Süreçler (Processes)
7.1 Ne Dönüyor Arkada?
Kod:
ps aux # Tüm çalışan süreçleri dök
top # Görev yöneticisi (canlı takip)
htop # Top'un daha renklisi, daha yakışıklısı (kurman gerekebilir)
pgrep nginx # Nginx'in PID numarasını bul
7.2 Durdur, Öldür, Yok Et
Kod:
kill 1234 # 1234 numaralı sürece "kapan" sinyali gönder (nazikçe)
kill -9 1234 # Naziklik bitti, kafasına sık (zorla kapat)
killall firefox # Tüm firefox süreçlerini temizle
7.3 Systemd (Servislerin Efendisi)
Servisleri (arkada çalışan programları) buradan yönetiriz:
Kod:
sudo systemctl start nginx # Başlat
sudo systemctl stop nginx # Durdur
sudo systemctl restart nginx # Kapat aç (en sık kullanılan)
sudo systemctl status nginx # Durum ne? Çalışıyor mu?
sudo systemctl enable nginx # Bilgisayar açılınca otomatik başlasın
Bölüm 8: Disk ve Depolama
8.1 Disk Durumu
Kod:
df -h # Disklerde ne kadar yer var? (İnsan okunabilir formatta)
du -sh klasor/ # Bu klasör kaç GB yer kaplıyor?
lsblk # Takılı diskleri ve bölümleri göster
8.2 Format ve Bağlama
Kod:
sudo mkfs.ext4 /dev/sdb1 # Diski ext4 formatına çevir (dikkat, veri gider!)
sudo mount /dev/sdb1 /mnt # Diski sisteme bağla (mount et)
sudo umount /mnt # Diski çıkar
Bölüm 9: Ağ İşleri (Network)
9.1 Bağlantı Kontrolü
Kod:
ip addr # IP adresim ne? (ifconfig eskide kaldı)
ping google.com # İnternet var mı? Karşı taraf cevap veriyor mu?
ss -tuln # Hangi portlar açık, kim dinliyor?
9.2 SSH (Uzaktan Bağlanma)
Kod:
ssh ahmet@192.168.1.5 # Sunucuya bağlan
ssh -p 2222 ahmet@sunucu # Farklı porttan bağlan
scp dosya.txt ahmet@sunucu:/tmp # Dosyayı sunucuya fırlat
9.3 Güvenlik Duvarı (Firewall)
Ubuntu'da UFW (Uncomplicated Firewall) çok basittir:
Kod:
sudo ufw allow 22 # SSH'a izin ver
sudo ufw allow 80 # Web sitesine izin ver
sudo ufw enable # Duvarı aktifleştir
sudo ufw status # Durumu göster
Bölüm 10: Paket Yükleme (Market)
10.1 Debian/Ubuntu (apt)
Kod:
sudo apt update # Market listesini güncelle (önce bunu yap!)
sudo apt upgrade # Kurulu programları güncelle
sudo apt install nginx # Nginx kur
sudo apt remove nginx # Nginx kaldır
10.2 CentOS/RHEL (dnf/yum)
Kod:
sudo dnf install nginx # Kur
sudo dnf update # Güncelle
Bölüm 11: Log Yönetimi (Kara Kutu)
Bir şey bozulduysa ilk bakacağın yer burasıdır.
- /var/log/syslog veya /var/log/messages: Sistemin genel dertleri burada.
- /var/log/auth.log: Kim girdi, kim şifreyi yanlış yazdı?
- /var/log/nginx/access.log: Web sitesine kimler geldi?
Kod:
tail -f /var/log/syslog # Logu canlı izle
journalctl -u nginx # Nginx servisinin loglarına bak
journalctl -xe # Son hataları detaylı dök
Bölüm 12: Otomasyon (Cron)
Belirli zamanlarda iş yaptırmak için Cron kullanılır.
Kod:
crontab -e # Zamanlama dosyasını aç
Formatı şöyledir: * * * * * komut (Dakika - Saat - Gün - Ay - Haftanın Günü)
Örnek (Her gece 03:00'te yedek al):
Kod:
0 3 * * * /home/ahmet/yedek_al.sh
Bölüm 13: Yedekleme
13.1 tar (Bohçalama)
Kod:
tar -cvf yedek.tar dosyalar/ # Arşivle
tar -xvf yedek.tar # Arşivi aç
tar -czvf yedek.tar.gz dosyalar/ # Hem arşivle hem sıkıştır (gzip)
13.2 rsync (Akıllı Kopyalama)
Sadece değişen dosyaları kopyalar, cankurtarandır.
Kod:
rsync -avz kaynak/ hedef/ # Senkronize et
rsync -avz kaynak/ user@sunucu:/hedef/ # Sunucuya yedekle
Bölüm 14: Performans İzleme
Sistem neden yavaşladı?
- top / htop: İşlemciyi, RAM'i kim yiyor?
- free -h: RAM durumu ne?
- iostat: Disk yazma hızı ne alemde?
- uptime: Makine ne kadar süredir açık, yük durumu (load average) ne?
Bölüm 15: Güvenlik Temelleri
- Root ile bağlanma: SSH ayarlarından root girişini kapat.
- Şifre kullanma: SSH anahtarı (key pair) kullan, şifreyi kapat.
- Fail2ban: Şifreyi 3 kere yanlış gireni engelle.
- Güncelle: apt update && apt upgrade yapmayı unutma.
Bölüm 16: Bash Scripting (Kodlama)
Tekrarlayan işleri otomatiğe bağlamak için script yazarız.
Örnek Script (selam.sh):
Kod:
#!/bin/bash
ISIM="Ahmet"
echo "Selam $ISIM, bugün nasılsın?"
if [ -f "/etc/passwd" ]; then
echo "Dosya yerinde duruyor."
fi
Çalıştırmak için:
Kod:
chmod +x selam.sh
./selam.sh
Bölüm 17: Konteynerler ve Docker
Sanal makine eskidi, artık Docker var.
Kod:
docker run hello-world # Test et
docker ps # Çalışan konteynerlar
docker images # İndirilmiş imajlar
docker-compose up -d # Tüm sistemi ayağa kaldır (compose dosyasıyla)
Bölüm 19: Sorun Giderme (Troubleshooting)
Panik yapma, şu sırayı takip et:
1. Sorun ne? Tam olarak ne çalışmıyor?
2. Loglar ne diyor? /var/log'a veya journalctl'e bak.
3. Kaynaklar ne durumda? Disk mi doldu (df -h), RAM mi bitti (free -h)?
4. Servis ayakta mı? systemctl status xxx.
5. Ağ var mı? ping, curl.
Sonuç
Aga bu rehber sana Linux'un kapısını açar ama içeri girip gezmek sana kalmış.
Linux öğrenmenin en iyi yolu bozmaktır. Kur sanal makineyi, dene, boz, patlat, sonra düzeltmeye çalış. Man sayfalarını okumaktan korkma. Script yaz, işlerini otomatiğe bağla.
Linux dünyasına hoş geldin dostum.
"Laf kalabalığı yapma, bana kodu göster." - Linus Durden
Bir sonraki Linux Rehberi sizce ne olsun arkadaşlar?
Son düzenleyen: Moderatör: