Linux Nedir?
Temel Tanım
Linux, bilgisayarların çalışmasını sağlayan bir işletim sistemi çekirdeğidir (kernel). Windows ve macOS gibi, bilgisayarın donanımıyla yazılımı arasında köprü kurar.
Linux'un en büyük farkı açık kaynak kodlu olmasıdır. Yani:
Ücretsiz
Lisans ücreti ödemezsiniz. İstediğiniz kadar kurun.
Güvenli
Virüs ve zararlı yazılımlara karşı daha dayanıklıdır.
Esnek
Kaynak kodu açık olduğu için istediğiniz gibi özelleştirebilirsiniz.
Stabil
Sunucularda aylarca, hatta yıllarca yeniden başlatılmadan çalışabilir.
Popüler Linux Dağıtımları (Distro)
Linux çekirdeği üzerine inşa edilmiş 600'den fazla dağıtım vardır. İşte en popülerleri:
Temel Terminal Komutları
Dosya ve Dizin Yönetimi
Klasörler arasında gezinme, dosya oluşturma ve silmeLinux'ta her şey bir dosya olarak görülür. Terminal üzerinden dosya sistemiyle çalışmak temel beceridir:
pwd # Çıktı: /home/kullanici
ls # Basit liste ls -la # Gizli dosyalar dahil detaylı liste ls -lh # İnsan okunabilir boyutlarla
cd /var/log # Mutlak yol cd .. # Bir üst dizine çık cd ~ # Ev dizinine git
# Yeni dizin oluştur mkdir proje_dizini # Boş dosya oluştur touch dosya.txt # Dosya kopyala cp dosya.txt yeni_dosya.txt # Dosya taşı / yeniden adlandır mv dosya.txt yeni_ad.txt # Dosya sil rm dosya.txt # Dizin ve içeriğini sil rm -r proje_dizini # Onay istemeden sil (DİKKAT!) rm -rf proje_dizini
rm -rf / komutu root yetkisiyle çalıştırılırsa
tüm sistemi siler! Asla root olarak rm -rf / yazmayın.
Dosya İçeriğini Görüntüleme
Dosyaları okuma, arama ve filtrelemeDosyaların içeriğini görüntülemek ve işlemek için temel komutlar:
cat /etc/passwd cat dosya1.txt dosya2.txt > birlesik.txt
less /var/log/syslog # q ile çık, Space ile ilerle, b ile geri
head -n 20 log.txt # İlk 20 satır tail -f /var/log/apache2/access.log # Canlı izle
# Basit arama grep "hata" log.txt # Büyük/küçük harf duyarsız grep -i "hata" log.txt # Tersini bul (içermeyen satırlar) grep -v "başarılı" log.txt # Recursive (alt dizinlerde de ara) grep -r "aranan_kelime" /var/log/ # Satır numarası ile göster grep -n "hata" log.txt # Regex ile arama grep -E "hata|uyarı|fatal" log.txt
tail -f komutu log dosyalarını canlı izlemek için kullanılır.
Yeni satır eklendikçe ekranda görünür. Sunucu loglarını takip etmek için vazgeçilmezdir.
Dosya İzinleri ve Sahiplik
chmod, chown ve yetkilendirmeLinux'ta her dosyanın okuma (r), yazma (w), çalıştırma (x) izinleri vardır. Bu izinler üç gruba ayrılır:
- Sahip (Owner): Dosyanın sahibi
- Grup (Group): Dosyanın ait olduğu grup
- Diğerleri (Others): Diğer tüm kullanıcılar
| İzin | Sayısal | Anlamı |
|---|---|---|
| rwx | 7 | Okuma + Yazma + Çalıştırma |
| rw- | 6 | Okuma + Yazma |
| r-x | 5 | Okuma + Çalıştırma |
| r-- | 4 | Sadece Okuma |
# Sayısal mod (en yaygın) chmod 755 script.sh # rwxr-xr-x chmod 644 dosya.txt # rw-r--r-- chmod 777 herkese.sh # rwxrwxrwx (GÜVENLİK RİSKİ!) # Sembolik mod chmod u+x script.sh # Sahibe çalıştırma ekle chmod g-w dosya.txt # Gruptan yazma iznini kaldır chmod o=r dosya.txt # Diğerlerine sadece okuma # Recursive chmod -R 755 /var/www/
# Sahip değiştir chown kullanici dosya.txt # Sahip ve grup değiştir chown kullanici:grup dosya.txt # Recursive chown -R www-data:www-data /var/www/html/
Kullanıcı ve Grup Yönetimi
Root ve Sudo Kavramı
Linux'ta root kullanıcısı sistemdeki en yetkili kullanıcıdır.
Günlük işlemlerde root olarak çalışmak güvenlik riski oluşturur.
Bunun yerine sudo komutu kullanılır.
Güvenli çalışma
Şifre sorar
Tam yetki
Normal kullanıcı
# Yeni kullanıcı oluştur sudo adduser yeni_kullanici # Kullanıcıya sudo yetkisi ver sudo usermod -aG sudo yeni_kullanici # Kullanıcı şifresini değiştir sudo passwd yeni_kullanici # Kullanıcıyı sil (ev diziniyle birlikte) sudo userdel -r yeni_kullanici # Kullanıcı bilgilerini gör id kullanici_adi whoami # Mevcut kullanıcı who # Sisteme bağlı kullanıcılar # Grup oluştur sudo groupadd gelistiriciler # Kullanıcıyı gruba ekle sudo usermod -aG gelistiriciler kullanici
Paket Yönetimi
Linux'ta yazılım kurmak için paket yöneticileri kullanılır. Dağıtıma göre farklı paket yöneticileri vardır:
# Paket listesini güncelle sudo apt update # Sistemdeki tüm paketleri yükselt sudo apt upgrade # Yeni paket kur sudo apt install nginx sudo apt install -y vim htop curl wget # Paket kaldır sudo apt remove nginx sudo apt purge nginx # Yapılandırmalarıyla birlikte # Gereksiz paketleri temizle sudo apt autoremove sudo apt autoclean # Paket ara apt search nginx # Paket bilgisi gör apt show nginx
# Paket listesini güncelle sudo yum update # veya sudo dnf update # Yeni paket kur sudo yum install nginx sudo dnf install -y vim htop curl wget # Paket kaldır sudo yum remove nginx sudo dnf remove nginx # Tüm paketleri yükselt sudo yum upgrade sudo dnf upgrade # Paket ara yum search nginx dnf search nginx # Paket bilgisi gör yum info nginx dnf info nginx # Gereksiz bağımlılıkları temizle sudo yum autoremove sudo dnf autoremove
Ağ Yönetimi ve Bağlantı
IP Adresi ve Arayüzler
# IP adreslerini gör (modern) ip addr ip a # Eski yöntem ifconfig # Ağ arayüzlerini listele ip link show # Belirli arayüzün IP'sini gör ip addr show eth0
Bağlantı Testleri
# Ping testi ping google.com ping -c 4 8.8.8.8 # DNS çözümleme dig google.com nslookup google.com # Port bağlantısı testi curl -v telnet://sunucu:80 nc -zv sunucu 80 # Güzergah (route) gör ip route route -n
SSH - Uzak Bağlantı
# Uzak sunucuya bağlan ssh kullanici@sunucu_ip # Belirli port ile bağlan ssh -p 2222 kullanici@sunucu_ip # Anahtar ile bağlan (şifresiz) ssh -i ~/.ssh/id_rsa kullanici@sunucu # Dosya kopyala (SCP) scp dosya.txt kullanici@sunucu:/hedef/ scp -r dizin/ kullanici@sunucu:/hedef/ # SSH anahtarı oluştur ssh-keygen -t rsa -b 4096
Firewall (UFW/iptables)
# UFW (Ubuntu) sudo ufw status sudo ufw enable sudo ufw allow 22 sudo ufw allow 80/tcp sudo ufw allow from 192.168.1.0/24 sudo ufw deny 3306 sudo ufw delete allow 80 # firewalld (CentOS/RHEL) sudo firewall-cmd --state sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --reload sudo firewall-cmd --list-all
Shell Scripting (Bash)
Bash Nedir?
Bash (Bourne Again SHell), Linux'ta komutları yazdığınız ve çalıştırdığınız komut satırı yorumlayıcısıdır. Birden fazla komutu bir dosyada toplayıp otomatik çalıştırmak için shell script yazılır. Sistem yöneticilerinin tekrarlayan işlerini otomatikleştirmek için vazgeçilmez bir araçtır.
İlk Script'inizi Yazın
.sh uzantılı dosya oluşturma ve çalıştırma#!/bin/bash # Bu benim ilk script'im echo "Merhaba Dünya!" echo "Bugün: $(date)" echo "Kullanıcı: $(whoami)" echo "Makine: $(hostname)"
# Çalıştırma izni ver chmod +x merhaba.sh # Çalıştır ./merhaba.sh # Veya bash ile çalıştır bash merhaba.sh
Değişkenler ve Koşullar
Script'leri dinamik hale getirme#!/bin/bash
# Değişken tanımla (boşluk bırakma!)
ISIM="Volkan"
YAS=30
# Değişken kullan ($ işareti)
echo "Merhaba, $ISIM!"
echo "Yaşın: ${YAS}"
# Kullanıcıdan input al
read -p "Dosya adı girin: " DOSYA
# Koşul kontrolü
if [ -f "$DOSYA" ]; then
echo "$DOSYA dosyası mevcut."
else
echo "$DOSYA dosyası bulunamadı!"
fi
# Sayısal karşılaştırma
if [ $YAS -ge 18 ]; then
echo "Reşitsiniz."
else
echo "Reşit değilsiniz."
fi
# Döngü
for i in 1 2 3 4 5; do
echo "Sayı: $i"
done
Fonksiyonlar ve İleri Teknikler
Modüler ve profesyonel script yazma#!/bin/bash
# Fonksiyon tanımla
merhaba() {
echo "Merhaba, $1!"
echo "Bugün: $(date +%Y-%m-%d)"
}
# Fonksiyon çağır
merhaba "Volkan"
# Hata kontrolü
if [ $? -eq 0 ]; then
echo "İşlem başarılı!"
else
echo "Bir hata oluştu!"
exit 1
fi
# Log dosyasına yaz
LOG="/var/log/script.log"
echo "$(date): Script çalıştı" >> $LOG
# Cron ile otomatik çalıştırma (her gece 2'de)
# crontab -e
# 0 2 * * * /path/to/script.sh
Cron Job - Zamanlanmış Görevler
⏰ Otomatik Görev Zamanlama
Cron, Linux'ta belirli aralıklarla otomatik olarak komut çalıştırmak için kullanılır. Yedekleme, log temizleme, rapor oluşturma gibi tekrarlayan işler için idealdir.
# Cron formatı: # * * * * * komut # | | | | | # | | | | +----- Haftanın günü (0-7, Pazar=0 veya 7) # | | | +------- Ay (1-12) # | | +--------- Ayın günü (1-31) # | +----------- Saat (0-23) # +------------- Dakika (0-59) # Örnekler: # Her dakika * * * * * echo "Her dakika çalışır" >> /tmp/cron.log # Her saat başı 0 * * * * /home/user/backup.sh # Her gün gece 2'de 0 2 * * * /home/user/backup.sh # Her Pazartesi sabah 9'da 0 9 * * 1 /home/user/rapor.sh # Her ayın 1'inde 0 0 1 * * /home/user/aylik-temizlik.sh # 5 dakikada bir */5 * * * * /home/user/kontrol.sh
# Cron tablosunu düzenle crontab -e # Mevcut cron görevlerini listele crontab -l # Tüm kullanıcıların cron görevlerini gör (root) cat /var/spool/cron/crontabs/ # Cron servisini kontrol et sudo systemctl status cron # Cron loglarını gör tail -f /var/log/cron
Genel Özet
Linux; dünyanın en yaygın kullanılan sunucu işletim sistemidir.
IT ve sistem yönetimi kariyerinizin temel taşıdır.
DevOps, Cloud, Cyber Security ve Sistem Yönetimi alanlarında vazgeçilmezdir.