42 - Born2beroot

Yayın: 7 Nisan 2025 | Yazar: Derya Acar

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.


Linux lsblk Komutu


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.

Disk Yapısı ve Blok Aygıtları

Disk Bölümleme ve Birimleme Alanları

Örnek Kullanım:


    lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT
                    

Örnek Çıktı:


        NAME   SIZE TYPE FSTYPE MOUNTPOINT
        sda     20G disk        
        ├─sda1   1G part ext4   /boot
        ├─sda2  15G part         (extended)
        └─sda5  15G part LVM     / (şifreli)
                    

LVM (Logical Volume Manager)

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.

Şifreli Diskler ve sda5_crypt

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.

Önemli Sistem Bölümleri

Ek Alanlar


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 ve Disk Yapılandırması


lsblk Nedir?

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:

Örnek:


    lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT
                

sda ve sdx Nedir?

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 Neden 1KB?

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 Nedir?

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.

Şifreli LVM Nedir?

LVM (Logical Volume Manager)

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.

lsblk Komutunun Diğer Alanları

Örnek lsblk çıktısı


    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]
        

Disk Bölümlerinin Görevleri


SSH, UFW ve sudo


SSH (Secure Shell) Nedir?

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 (Uncomplicated Firewall) Nedir?

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.

UFW Komutları:


    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 (superuser do) Nedir?

sudo, normal kullanıcıların yönetici (root) yetkisiyle geçici olarak komut çalıştırmasına izin veren bir araçtır.

Örnek sudo kullanımları:


    sudo apt update
    sudo reboot
    sudo crontab -e     # Root kullanıcısı için cron ayarlarını düzenler
                

Sudo Yetkisi Verme

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, Sanal Makineler ve Dağıtım Bilgileri


hostname ve hostnamectl

hostname, sistemin ağ üzerindeki adını gösterir ya da ayarlamak için kullanılır.

Kalıcı hostname ayarlama:


    sudo hostnamectl set-hostname yeni_hostname
                

Virtual Machine (VM) Nedir?

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.

Debian mı CentOS mu?

Linux dünyasında farklı dağıtımlar vardır. İkisi arasında temel farklar:


Paket Yönetimi ve Güvenlik


apt vs aptitude

Her ikisi de Debian tabanlı sistemlerde paket yüklemek için kullanılır.

Örnek kullanım:


    sudo apt update && sudo apt upgrade
    sudo apt install vim
    sudo aptitude search apache2
                

AppArmor Nedir?

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.

AppArmor durumunu kontrol etmek:


    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.


Sistem Takibi ve Otomasyon


cron ve crontab

cron, belirli zamanlarda otomatik olarak komut veya betik çalıştırmak için kullanılan zamanlayıcı servistir.

crontab örnekleri:


    # 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 - Sistem Bilgisi

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 - CPU Bilgisi

lscpu, işlemci mimarisi, çekirdek sayısı, CPU modeli gibi donanım bilgilerini gösterir.

free - Bellek Kullanımı

free, RAM ve swap belleğinin ne kadar kullanıldığını gösterir.

Bellek çıktısını MB cinsinden görmek:


    free -m
                

df - Disk Kullanı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 - Gerçek Zamanlı Sistem İzleme

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)
                

Temel Bash Komutları: awk, grep, uniq, wc, sort, printf


awk

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

grep, bir dosyada ya da çıktıda anahtar kelime aramak için kullanılır.

uniq

uniq, tekrarlayan satırları filtreler (genellikle sort ile birlikte kullanılır).

wc

wc (word count), dosya içeriğindeki satır, kelime veya karakter sayılarını gösterir.

sort

sort, verileri alfabetik ya da sayısal olarak sıralamak için kullanılır.

printf

printf, biçimli çıktı üretir. Özellikle script içinde estetik çıktı için kullanılır.

Komutları birlikte kullanmak:


    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).


monitoring.sh Script'i - Açıklaması


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.

Script:


#!/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"
        

Script Özeti:

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.


Öneri ve İletişim:

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

42 42 Ecole Libft C