Bu proje, bir Linux sunucusunda temel sistem yönetimi becerilerini öğrenmeyi ve uygulamayı amaçlar. Proje kapsamında, bir sanal makine üzerinde temel Linux sistem yönetimi görevlerini gerçekleştirmek için gerekli bilgi ve deneyim kazanılır.
Öncelikle kurulum için github hesabımdaki PDFleri okumanızı ve kurulumu o şekilde tamamlamanızı öneririm. Bu sayfadaki yazılar kurulum için değil, bilgi ve kavramları anlamak içindir.
lsblk komutu (list block devices), sistemdeki blok aygıtları görüntülemek için kullanılır.
                Bu komut sayesinde disklerin bölümleri, boyutları, türleri, bağlama noktaları ve dosya sistemleri
                hakkında detaylı bilgi alınabilir.
            
sda diskinin bölümleri. Sayılar, bölüm sırasını
                    gösterir.sda, sda1).disk, part, rom).
                ext4, vfat,
                    swap).
                /boot, /,
                    /home).
                
    lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT
                    
                
        NAME   SIZE TYPE FSTYPE MOUNTPOINT
        sda     20G disk        
        ├─sda1   1G part ext4   /boot
        ├─sda2  15G part         (extended)
        └─sda5  15G part LVM     / (şifreli)
                    
                
                LVM, disk bölümlerini dinamik olarak yönetmeye olanak tanır. Normal bölümler sabitken, LVM ile disk
                alanları istenildiği gibi büyütülebilir, küçültülebilir ya da taşınabilir.
                
                Volume Group (VG) adı verilen yapılar ile birden fazla fiziksel disk birleştirilerek
                mantıksal bölümler (LV) oluşturulur.
            
                Eğer bir disk bölümü şifrelenmişse, lsblk çıktısında bu sda5_crypt gibi
                isimlerle görünür.
                Bu, LUKS veya benzeri bir sistemle şifreleme yapıldığını gösterir. Şifreleme sayesinde veri güvenliği
                sağlanır.
            
Bu bilgiler, disk yapılandırmasını anlamanızı sağlar ve özellikle sistem kurulumları, yedekleme ve
                güvenlik işlemleri için temel teşkil eder. lsblk çıktısını yorumlayabilmek, sistem
                yöneticiliğinde önemli bir beceridir.
lsblk (list block devices) komutu, Linux sistemlerinde disk, bölüm ve bağlı aygıtları
            görüntülemek için kullanılır. Bilgileri /sys/dev/block üzerinden çeker. Çıktısı ağaç
            yapısındadır ve genellikle şu şekilde görünür:
    lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT
                
            sda, sistemdeki ilk disk aygıtıdır. SCSI, SATA gibi diskleri temsil eder. Diğer diskler
            sdb, sdc olarak devam eder. Disk üzerindeki bölümler sda1,
            sda2 gibi adlandırılır.
        
sda2 genişletilmiş (extended) bölüm olarak yapılandırılmıştır. Veri içermez, yalnızca mantıksal
            bölümleri barındırır. sda5 gibi bölümler bu kapsayıcı içerisinde yer alır.
sda5_crypt, şifreli bir mantıksal bölümdür. Genellikle LUKS (Linux Unified Key Setup) ile
            şifrelenir. Sistemin yeniden başlatılması durumunda bu bölüm açılmadan önce parola sorulur.
LVM, diskleri mantıksal olarak bölümlendirip daha esnek kullanım sağlar. Birden fazla diski tek bir Volume Group (VG) altında toplayabiliriz.
    NAME          SIZE TYPE  FSTYPE      MOUNTPOINT
    sda            40G disk
    ├─sda1        512M part  ext4        /boot
    ├─sda2        1K   part              (extended)
    └─sda5       39.5G part  crypto_LUKS
    └─sda5_crypt
                39.5G crypt LVM2_member
        ├─vg-root  35G  lvm   ext4       /
        └─vg-swap 4.5G lvm   swap       [SWAP]
        
            
            SSH, iki bilgisayar arasında güvenli, şifrelenmiş bir bağlantı sağlayan bir ağ protokolüdür.
            Genellikle uzak bir sunucuya terminal üzerinden bağlanmak için kullanılır.
        
            UFW, iptables’in basitleştirilmiş hali olan bir güvenlik duvarı yönetim aracıdır. Karmaşık
            kurallarla uğraşmadan ağ trafiğini kontrol etmeye olanak tanır.
        
sudo ufw allow ssh
    sudo ufw enable
    sudo ufw allow 22      # SSH için port açma
    sudo ufw deny 80       # HTTP portunu engelleme
    sudo ufw status        # Durumu kontrol et
    sudo ufw disable       # Güvenlik duvarını kapat
                
            
            sudo, normal kullanıcıların yönetici (root) yetkisiyle geçici olarak komut çalıştırmasına izin
            veren bir araçtır.
        
sudo ile başlayan işlemler yüksek yetkiyle çalışır./etc/sudoers dosyası üzerinden tanımlanır.
    sudo apt update
    sudo reboot
    sudo crontab -e     # Root kullanıcısı için cron ayarlarını düzenler
                
            Bir kullanıcıya sudo yetkisi vermek için:
    sudo usermod -aG sudo kullanici_adi
                
            
            Bu komut, kullanıcının sudo grubuna eklenmesini sağlar. Grup eklemesinden sonra çıkış yapıp
            yeniden giriş yapmak gerekir.
        
hostname, sistemin ağ üzerindeki adını gösterir ya da ayarlamak için kullanılır.
hostname: Mevcut sistem adını gösterir.sudo hostname yeni_ad: Geçici olarak sistem adını değiştirir (yeniden başlatmada eski
                haline döner).hostnamectl: Kalıcı hostname değişikliği için kullanılır.
    sudo hostnamectl set-hostname yeni_hostname
                
            VM, fiziksel bir bilgisayar içinde çalışan sanal bir işletim sistemidir. Born2beroot projesi VirtualBox gibi yazılımlarla sanal makine üzerinde yapılır.
Linux dünyasında farklı dağıtımlar vardır. İkisi arasında temel farklar:
Her ikisi de Debian tabanlı sistemlerde paket yüklemek için kullanılır.
apt: Komut satırı için sade, modern bir arayüz.aptitude: TUI (text UI) arayüze sahip, bağımlılık çözümlemesinde daha akıllıdır.aptitude ayrı kurulmalıdır.
            
    sudo apt update && sudo apt upgrade
    sudo apt install vim
    sudo aptitude search apache2
                
            AppArmor, uygulama düzeyinde güvenlik profilleri oluşturarak, uygulamaların sistem üzerinde
            neleri yapıp yapamayacağını belirleyen bir Linux güvenlik modülüdür.
    sudo aa-status
    sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx
    sudo aa-disable /etc/apparmor.d/usr.sbin.nginx
                
            AppArmor profilleri /etc/apparmor.d/ dizini altında yer alır. Aktif/pasif hale getirme işlemleri
            bu dosyalar üzerinden yapılır.
cron, belirli zamanlarda otomatik olarak komut veya betik çalıştırmak için kullanılan
            zamanlayıcı servistir.
crontab: Kullanıcının zamanlanmış görevlerini düzenlemesini sağlar./etc/crontab: Tüm sistem genelindeki görevleri içerir.
    # Her gün saat 4:00'te sistem güncellemesi yap
    0 4 * * * apt update && apt upgrade -y
    # Her pazartesi 12:00'de log dosyalarını temizle
    0 12 * * 1 rm -rf /var/log/*.log
                
            Root yetkisiyle sistem görevleri eklemek için: sudo crontab -e
uname, çekirdek (kernel) ve sistem hakkındaki bilgileri gösterir.
    uname -a        # Tüm bilgileri verir
    uname -r        # Kernel sürümü
    uname -n        # Hostname
                
            lscpu, işlemci mimarisi, çekirdek sayısı, CPU modeli gibi donanım bilgilerini gösterir.
free, RAM ve swap belleğinin ne kadar kullanıldığını gösterir.
    free -m
                
            df, disk bölümlerinin ne kadar kullanıldığını gösterir.
    df -h           # İnsan okunabilir formatta (MB, GB)
    df -Bm          # Sonuçları MB cinsinden verir
                
            top, sistemin anlık CPU, RAM kullanımı ve işlem bilgilerini canlı olarak gösterir.
    top -bn1        # Tek seferlik çıktı verir (n: tekrar sayısı, b: batch mod)
                
            awk, metin dosyalarındaki sütunları ayıklamak ve filtrelemek için kullanılır.
    # /etc/passwd dosyasındaki tüm kullanıcı adlarını al
    awk -F: '{print $1}' /etc/passwd
                
            grep, bir dosyada ya da çıktıda anahtar kelime aramak için kullanılır.
uniq, tekrarlayan satırları filtreler (genellikle sort ile birlikte kullanılır).
        
wc (word count), dosya içeriğindeki satır, kelime veya karakter sayılarını gösterir.
sort, verileri alfabetik ya da sayısal olarak sıralamak için kullanılır.
printf, biçimli çıktı üretir. Özellikle script içinde estetik çıktı için kullanılır.
    cat dosya.txt | sort | uniq -c | sort -nr | head -n 10
                
            Yukarıdaki komut, en sık geçen ilk 10 satırı gösterir (log analizi gibi işlemlerde kullanılır).
Bu bash betiği, sistemin genel durumunu gerçek zamanlı olarak değerlendirir ve wall komutu ile
            oturum açmış tüm kullanıcılara özet bilgileri gönderir. Özellikle sunucuların durumu hakkında hızlı bilgi
            almak için kullanışlıdır.
#!/bin/bash
# Sistem mimarisi ve çekirdek bilgisi
arc=$(uname -a)
# Fiziksel işlemci (physical CPU) sayısı
pcpu=$(grep "physical id" /proc/cpuinfo | sort | uniq | wc -l)
# Sanal işlemci (vCPU) sayısı
vcpu=$(grep "^processor" /proc/cpuinfo | wc -l)
# RAM bilgileri (toplam, kullanılan, yüzde)
fram=$(free -m | grep Mem: | awk '{print $2}')
uram=$(free -m | grep Mem: | awk '{print $3}')
pram=$(free | grep Mem: | awk '{printf("%.2f"), $3/$2*100}')
# Disk bilgileri (toplam, kullanılan, yüzde)
fdisk=$(df -Bg | grep '^/dev/' | grep -v '/boot$' | awk '{ft += $2} END {print ft}')
udisk=$(df -Bm | grep '^/dev/' | grep -v '/boot$' | awk '{ut += $3} END {print ut}')
pdisk=$(df -Bm | grep '^/dev/' | grep -v '/boot$' | awk '{ut += $3} {ft+= $2} END {printf("%d"), ut/ft*100}')
# CPU yükü (kullanıcı + sistem)
cpul=$(top -bn1 | grep '^%Cpu' | cut -c 9- | xargs | awk '{printf("%.1f%%"), $1 + $3}')
# Sistem en son ne zaman başlatıldı
lb=$(who -b | awk '$1 == "system" {print $3 " " $4}')
# LVM kullanılıyor mu?
lvmt=$(lsblk -o TYPE | grep "lvm" | wc -l)
lvmu=$(if [ $lvmt -eq 0 ]; then echo no; else echo yes; fi)
# Aktif TCP bağlantı sayısı
ctcp=$(cat /proc/net/tcp | wc -l | awk '{print $1-1}' | tr '\n' ' ')
# Sistemde kaç kullanıcı oturum açmış
ulog=$(users | wc -w)
# IP ve MAC adresi
ip=$(hostname -I)
mac=$(ip link show | awk '$1 == "link/ether" {print $2}')
# sudo ile yapılan toplam komut sayısı
cmds=$(journalctl _COMM=sudo | grep COMMAND | wc -l)
# Bilgileri tüm kullanıcı ekranına bastır
wall " #Architecture: $arc
#CPU physical: $pcpu
#vCPU: $vcpu
#Memory Usage: $uram/${fram}MB ($pram%)
#Disk Usage: $udisk/${fdisk}Gb ($pdisk%)
#CPU load: $cpul
#Last boot: $lb
#LVM use: $lvmu
#Connexions TCP : $ctcp ESTABLISHED
#User log: $ulog
#Network: IP $ip ($mac)
#Sudo: $cmds cmd"
        
            Bu script, sistemin sağlık durumunu gerçek zamanlı analiz etmek için idealdir. crontab ile
            zamanlanarak belirli aralıklarla çalıştırılabilir veya açılışta otomatik olarak tetiklenebilir.
            Proje hakkında tüm görüş, öneri ve sorularınız için dilediğiniz zaman iletişime geçebilirsiniz.
            daha çok yazı, bilgi ve içerik için takipte kalmayı unutmayın.
            Projenin orijinal kaynak kodlarına aşağıdaki bağlantıdan ulaşabilirsiniz:
            
            🔗 Proje GitHub Linki