🐧 Sistem Yönetimi 🐧

Linux Eğitim Rehberi

Sıfırdan ileri seviyeye Linux terminal, komutlar, dosya sistemi, kullanıcı yönetimi, ağ yapılandırması ve shell scripting için kapsamlı rehber.

#Linux #Terminal #Bash #SistemYönetimi #ShellScripting #DevOps
96.3%
Sunucu Pazar Payı
600+
Dağıtım (Distro)
Açık Kaynak
Özgür Yazılım

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.

Neden Linux? Dünya üzerindeki sunucuların %96'sı Linux çalıştırır. Google, Facebook, Amazon, Netflix gibi dev şirketlerin tüm altyapısı Linux üzerindedir. Bir IT uzmanı için Linux bilgisi olmazsa olmazdır.

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:

Ubuntu
En popüler masaüstü Linux'u. Başlangıç için ideal.
CentOS / Rocky Linux
Kurumsal sunucular için. RHEL tabanlı, stabil.
Debian
Kararlı ve güvenilir. Ubuntu'nun atası.
Fedora
En yeni teknolojileri test eder. Geliştiriciler için.
Kali Linux
Siber güvenlik ve penetrasyon testleri için.
Arch Linux
Tam kontrol isterseniz. İleri seviye kullanıcılar için.
💡 Tavsiye Yeni başlayanlar için Ubuntu en iyi seçimdir. Geniş topluluk desteği, bol dokümantasyon ve kullanıcı dostu arayüzü vardır. Sunucu yönetimi öğrenmek istiyorsanız CentOS/Rocky Linux tercih edin.
⌨️

Temel Terminal Komutları

1

Dosya ve Dizin Yönetimi

Klasörler arasında gezinme, dosya oluşturma ve silme

Linux'ta her şey bir dosya olarak görülür. Terminal üzerinden dosya sistemiyle çalışmak temel beceridir:

pwd - Bulunduğun Dizini Gör
pwd
# Çıktı: /home/kullanici
ls - Dizin İçeriğini Listele
ls              # Basit liste
ls -la          # Gizli dosyalar dahil detaylı liste
ls -lh          # İnsan okunabilir boyutlarla
cd - Dizin Değiştir
cd /var/log         # Mutlak yol
cd ..               # Bir üst dizine çık
cd ~                # Ev dizinine git
DOSYA OLUŞTURMA & SİLME
# 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
⚠️ DİKKAT: rm -rf / rm -rf / komutu root yetkisiyle çalıştırılırsa tüm sistemi siler! Asla root olarak rm -rf / yazmayın.
2

Dosya İçeriğini Görüntüleme

Dosyaları okuma, arama ve filtreleme

Dosyaların içeriğini görüntülemek ve işlemek için temel komutlar:

cat - Dosyayı Görüntüle
cat /etc/passwd
cat dosya1.txt dosya2.txt > birlesik.txt
less / more - Sayfalı Görüntüle
less /var/log/syslog
# q ile çık, Space ile ilerle, b ile geri
head / tail - Baştan/Sondan Gör
head -n 20 log.txt    # İlk 20 satır
tail -f /var/log/apache2/access.log  # Canlı izle
GREP - İÇERİK ARAMA
# 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 İpucu 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.
3

Dosya İzinleri ve Sahiplik

chmod, chown ve yetkilendirme

Linux'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
İzinSayısalAnlamı
rwx7Okuma + Yazma + Çalıştırma
rw-6Okuma + Yazma
r-x5Okuma + Çalıştırma
r--4Sadece Okuma
CHMOD - İZİN DEĞİŞTİRME
# 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/
CHOWN - SAHİPLİK DEĞİŞTİRME
# 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.

👤
Normal Kullanıcı
Günlük işlemler
Güvenli çalışma
🔑
sudo Komutu
Geçici yetki yükseltme
Şifre sorar
👑
Root Yetkisi
Tek komut için
Tam yetki
↩️
Geri Dön
Komut biter
Normal kullanıcı
KULLANICI YÖNETİMİ KOMUTLARI
# 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:

APT - DEBIAN/UBUNTU
# 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
YUM/DNF - RHEL/CENTOS/ROCKY
# 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.

1

İlk Script'inizi Yazın

.sh uzantılı dosya oluşturma ve çalıştırma
merhaba.sh
#!/bin/bash

# Bu benim ilk script'im
echo "Merhaba Dünya!"
echo "Bugün: $(date)"
echo "Kullanıcı: $(whoami)"
echo "Makine: $(hostname)"
ÇALIŞTIRMA
# Çalıştırma izni ver
chmod +x merhaba.sh

# Çalıştır
./merhaba.sh

# Veya bash ile çalıştır
bash merhaba.sh
2

Değişkenler ve Koşullar

Script'leri dinamik hale getirme
DEGISKENLER.sh
#!/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
3

Fonksiyonlar ve İleri Teknikler

Modüler ve profesyonel script yazma
FONKSIYON.sh
#!/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 SÖZDİZİMİ
# 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 YÖNETİMİ
# 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.

✓ Terminal ile Tam Kontrol
Her şeyi komut satırından yönetirsiniz
✓ Güvenli ve Stabil
Virüslere karşı dirençli, uzun süre çalışabilir
✓ Otomasyon İmkânı
Shell script ve cron ile tekrarlayan işleri otomatikleştirme
✓ Ücretsiz ve Açık Kaynak
Lisans maliyeti yok, topluluk desteği güçlü

IT ve sistem yönetimi kariyerinizin temel taşıdır.

DevOps, Cloud, Cyber Security ve Sistem Yönetimi alanlarında vazgeçilmezdir.

#Linux #Bash #Terminal #SistemYönetimi #DevOps #Cloud