Terminal, Linux sistemlerde en güçlü araçtır. Grafiksel arayüz olmadan sistem yönetimi yapabilmenizi sağlar. Günlük kullanımda terminal bilgisi:
- Sistem sorunlarını hızlı çözmenize
- Otomatize işlemler yapmanıza
- Sistem kaynaklarını verimli kullanmanıza yardımcı olur
$ # Normal kullanıcı promptu
# # Root kullanıcı promptu
Terminalde gördüğünüz bu işaretler size hangi yetkide olduğunuzu gösterir:
$
işareti: Sınırlı yetkili normal kullanıcı#
işareti: Tam yetkili root kullanıcı
sudo su # Root kullanıcıya geçer
exit # Normal kullanıcıya döner
whoami # Aktif kullanıcıyı gösterir
# Yeni kullanıcı oluşturma
sudo useradd -s /bin/bash -m -d /home/yenikullanici -g sudo yenikullanici
# Kullanıcı şifresi belirleme
sudo passwd yenikullanici
Parametreler ve açıklamaları:
-s
: Shell belirtme - kullanıcının hangi shell'de çalışacağını belirler-m
: Home dizini oluşturma (mkdir) - kullanıcıya özel dizin oluşturur-d
: Home dizini lokasyonu - kullanıcı dizininin nerede oluşturulacağını belirler-g
: Birincil grup atama - kullanıcının ana grubunu belirler
Diyelim ki yeni bir stajyer için hesap oluşturacaksınız:
# Stajyer grubu oluştur
sudo groupadd stajyerler
# Stajyer kullanıcı oluştur
sudo useradd -s /bin/bash -m -d /home/stajyer1 -g stajyerler stajyer1
# Şifre belirle
sudo passwd stajyer1
# Sınırlı yetkiler ver
sudo usermod -G stajyerler stajyer1
Linux'ta her şey bir dosyadır ve hiyerarşik bir yapı vardır:
/Root dizin (her şeyin başlangıcı)
├── home/ Kullanıcı dizinleri
├── etc/ Sistem ayarları
├── var/ Değişken dosyalar (loglar vs.)
└── usr/ Programlar ve kütüphaneler
- Dosya Arama:
# Masaüstünde .pdf uzantılı dosyaları bul
find ~/Desktop -name "*.pdf"
# Son 7 günde değiştirilmiş dosyaları bul
find /home -mtime -7
- Disk Kullanımı:
# Dizin boyutlarını görüntüle
du -sh *
# Disk kullanımını kontrol et
df -h
- Metin Dosyası İşlemleri:
# Dosya içeriğini görüntüle
cat dosya.txt
# Dosyada kelime ara
grep "aranacak_kelime" dosya.txt
# Dosyaya metin ekle
echo "yeni satır" >> dosya.txt
# Tüm kullanıcıları listeler
cat /etc/passwd
# Çıktı örneği: kullanıcı:x:1000:1000::/home/kullanıcı:/bin/bash
# Kullanıcı detaylarını gösterir
id hacker
# Çıktı örneği: uid=1000(hacker) gid=1000(hacker) groups=1000(hacker),27(sudo)
# Kullanıcı şifre durumunu gösterir
cat /etc/shadow
# Çıktı örneği: hacker:$6$xyz...:18734:0:99999:7:::
# Yeni grup oluşturma
groupadd pentesters
# Grupları listeleme
cat /etc/group
# Kullanıcıyı gruba ekleme
usermod -G pentesters tunahan
# Kullanıcıyı gruptan çıkarma
gpasswd -d hacker pentesters
# Kullanıcı kilitleme
usermod -L hacker
# Kullanıcı ve tüm dosyalarını silme
userdel -r hacker
# Sadece kullanıcıyı silme (dosyaları kalır)
userdel hacker
# Kullanıcı dizinlerini listeleme
ls -al /home/
# Sudo dosyasını düzenleme
sudo vi /etc/sudoers
# Örnek yapılandırmalar:
# Kullanıcı yetkilendirme
hacker ALL=(ALL:ALL) ALL # Tüm komutlara yetki
hacker ALL=(ALL:ALL) /usr/bin/systemctl # Sadece systemctl komutuna yetki
# Grup yetkilendirme
%sudo ALL=(ALL:ALL) ALL # Sudo grubu tam yetki
%juniors ALL=(ALL:ALL) /usr/bin/apt # Juniors grubu sadece apt komutu
# İnternet bağlantısı kontrolü
ping google.com
# Ağ arayüzlerini listele
ip addr show
# DNS ayarlarını kontrol et
cat /etc/resolv.conf
Ağ sorunu yaşadığınızda:
- Önce fiziksel bağlantıyı kontrol edin
- IP adresini kontrol edin:
ip addr show
- Ağ arayüzünü yeniden başlatın:
sudo ip link set eth0 down
sudo ip link set eth0 up
- DNS çözümlemesini test edin:
nslookup google.com
# Ağ arayüzlerini listeleme
ip addr
# Çıktı örneği:
# 1: lo: <LOOPBACK,UP,LOWER_UP>
# 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>
# Arayüz kapatma/açma
ip link set eth0 down
ip link set eth0 up
# Arayüz detayları
ethtool -i eth0
# Çıktı: driver, version, firmware-version bilgileri
# Arayüz istatistikleri
ethtool -S eth0
# Çıktı: rx_packets, tx_packets, collisions vb.
# DNS ayarlarını görüntüleme
cat /etc/resolv.conf
# DNS sunucu ekleme örneği
nameserver 8.8.8.8
nameserver 1.1.1.1
# Anlık sistem durumu
top
# Bellek kullanımı
free -h
# Disk kullanımı
df -h
Sistem yavaşladığında:
- CPU kullanımını kontrol et:
top
- Bellek kullanımını kontrol et:
free -h
- Disk kullanımını kontrol et:
df -h
- Yüksek kaynak kullanan süreçleri bul:
ps aux --sort=-%cpu | head
# Servis durumunu kontrol et
systemctl status nginx
# Servisi başlat
systemctl start nginx
# Servisi durdur
systemctl stop nginx
# Servisi yeniden başlat
systemctl restart nginx
# Otomatik başlatma ayarları
systemctl enable nginx # Sistem açılışında otomatik başlar
systemctl disable nginx # Otomatik başlatma devre dışı
Web sunucusu örneği:
# Apache'yi kur
sudo apt install apache2
# Servisi başlat
sudo systemctl start apache2
# Otomatik başlatmayı etkinleştir
sudo systemctl enable apache2
# Konfigürasyonu kontrol et
sudo apache2ctl configtest
- Düzenli güncelleme:
sudo apt update
sudo apt upgrade
- Önemli dosyaları yedekleme:
# Ev dizinini yedekle
tar -czf backup.tar.gz /home/kullanici
# Belirli bir dizini yedekle
rsync -av kaynak/ hedef/
- İzinleri kontrol etme:
# Dosya izinlerini görüntüle
ls -l
# İzinleri değiştir
chmod 644 dosya.txt
# Aktif süreçleri görüntüleme
ps
ps aux # Tüm süreçler
ps axjf # Ağaç yapısında gösterim
# Süreç ağacı
pstree
# Sistem kaynakları izleme
top
htop # Daha gelişmiş arayüz
# Bellek kullanımı
free -h # İnsan okunabilir format
Ctrl + C
: Çalışan programı durdurCtrl + Z
: Programı arka plana alCtrl + R
: Komut geçmişinde araCtrl + L
: Ekranı temizle
# Son kullanılan komutları göster
history
# Son 10 komutu göster
history | tail
# Belirli bir komutu ara
history | grep "apt"
# Sistem bilgilerini göster
uname -a
# Donanım bilgilerini göster
lshw
# İşlemci bilgilerini göster
cat /proc/cpuinfo
# Mevcut dizin
pwd
# Çıktı: /home/kullanıcı
# Dizin değiştirme
cd /home/hacker/Desktop
cd .. # Üst dizin
cd / # Kök dizin
cd ~ # Kullanıcı ana dizini
# Dizin oluşturma
mkdir linuxculer
mkdir -p dizin1/dizin2/dizin3 # İç içe dizinler
# Dosya oluşturma
touch dosya.txt
touch {1..5}.txt # 1.txt'den 5.txt'ye kadar dosya oluşturur
# Kopyalama işlemleri
cp dosya.txt yeni.txt
cp -r kaynak_dizin/ hedef_dizin/
# Taşıma/Yeniden adlandırma
mv eski.txt yeni.txt
mv dizin1 /yeni/konum/
# Silme işlemleri
rm dosya.txt
rm -rf dizin/ # Dizin ve içeriğini sil
# Çıktı yönlendirme
ls -al | grep "txt"
more /etc/passwd | grep root
# Koşullu çalıştırma
mkdir dizin && cd dizin
ping google.com && ls -al
# Paralel çalıştırma
ls -al & ping google.com
mkdir linux & touch linux/dosya.txt
# Mevcut run-level kontrolü
systemctl get-default
# Çıktı: graphical.target
# Run-level değiştirme
systemctl isolate multi-user.target # CLI modu
systemctl isolate rescue.target # Kurtarma modu
systemctl isolate emergency.target # Acil durum modu
Run-Level açıklamaları:
rc0.d
- Sistemi güvenli şekilde kapatırrc1.d
- Tek kullanıcı modu, sistem bakımı içinrc2.d
- Çok kullanıcılı mod, GUI yok, yüksek performansrc3.d
- Ağ servisleri için optimize edilmiş modrc4.d
- Özelleştirilebilir seviyerc5.d
- GUI destekli tam fonksiyonel modrc6.d
- Sistemi yeniden başlatmarcS.d
- Sistem başlangıç seviyesi, kernel seviyesi müdahale
/etc/ # Sistem konfigürasyon dosyaları
/home/ # Kullanıcı dizinleri
/usr/bin/ # Sistem uygulamaları
/var/log/ # Sistem logları
/opt/ # Üçüncü parti uygulamalar
/mnt/ # Geçici bağlama noktaları
- Log dosyalarını kontrol et:
tail -f /var/log/syslog
- Disk alanını kontrol et:
df -h
du -sh /*
- Sistem yükünü kontrol et:
uptime
top
- Ağ bağlantılarını kontrol et:
netstat -tuln
ss -tuln
- "Komut bulunamadı" hatası:
# PATH'i kontrol et
echo $PATH
# Programı yeniden kur
sudo apt install paket_adi
- Disk dolu hatası:
# Büyük dosyaları bul
find / -size +100M
# Eski log dosyalarını temizle
sudo journalctl --vacuum-time=7d
- Servis başlatma hatası:
# Servis durumunu kontrol et
systemctl status servis_adi
# Servis loglarını incele
journalctl -u servis_adi
-
Root Yetkileri:
- Root hesabını doğrudan kullanmaktan kaçının
- Sudo kullanımında en az yetki prensibini uygulayın
- Root şifresini güvenli ve karmaşık tutun
-
Sistem Güvenliği:
- Kritik sistem dosyalarını değiştirmeden önce yedek alın
rm -rf /
gibi tehlikeli komutlardan kaçının- Sistem loglarını düzenli kontrol edin
-
Kullanıcı Yönetimi:
- Kullanıcı şifrelerini düzenli değiştirin
- Kullanılmayan hesapları devre dışı bırakın
- Grup yetkilerini düzenli gözden geçirin
Bir paket, yazılımın kendisi, konfigürasyon dosyaları ve kurulum talimatlarını içeren bir arşiv dosyasıdır. Linux'ta yazılım kurulumu ve yönetimi bu paketler üzerinden yapılır.
Herhangi bir komutun detaylı kullanımını öğrenmek için:
man komut_adi
# Örnek:
man apt # apt komutunun tüm detaylarını gösterir
$ # Normal kullanıcı promptu
# # Root kullanıcı promptu
sudo komut # Tek bir komutu root yetkisiyle çalıştırır
sudo su # Root kullanıcıya geçiş yapar
exit # Root oturumundan çıkar
whoami # Aktif kullanıcıyı gösterir
Önemli Not: Root yetkilerini dikkatli kullanın. Yanlış komutlar sistem bütünlüğüne zarar verebilir.
Debian tabanlı sistemlerin (Ubuntu, Kali Linux vb.) ana paket yöneticisidir.
Özellikler:
- Online paket kurulumu
- Otomatik bağımlılık çözümleme
- Repo tabanlı güncelleme sistemi
Debian paket sisteminin temel aracıdır.
Özellikler:
- Offline paket kurulumu
- Düşük seviye paket yönetimi
.deb
uzantılı paketlerle çalışır
# Paket arama
apt search sqlmap
# Çıktı örneği:
# sqlmap/kali-rolling,now 1.6.12-1 all
# Automatic SQL injection tool
# Detaylı paket bilgisi
apt show sqlmap
# Çıktı: Versiyon, bağımlılıklar, açıklama gibi detaylı bilgiler
# Kurulu paketleri listeleme
dpkg -l
# Çıktı formatı:
# ii paket-adi versiyon mimari açıklama
# Belirli bir paketi arama
dpkg -l | grep nmap
# Çıktı: nmap ile ilgili kurulu paketler
# Paket bağımlılıklarını görüntüleme
apt-cache depends nmap
# Çıktı: nmap'in çalışması için gereken tüm paketler
# Temel kurulum
sudo apt install paket_adi
# Örnek wget kurulumu
sudo apt install wget
# Not: wget bir dosya indirme aracıdır
# Kullanım: wget https://site.com/dosya.zip
# Birden fazla paket kurulumu
sudo apt install paket1 paket2 paket3
# .deb paketi kurulumu
sudo dpkg -i paket_adi.deb
# Örnek Chrome kurulumu
cd Downloads
sudo dpkg -i google-chrome-stable_current_amd64.deb
# Kurulum sonrası bağımlılık düzeltme
sudo apt --fix-broken install
# APT ile kaldırma
sudo apt remove paket_adi
# DPKG ile kaldırma
sudo dpkg -r paket_adi
# Tam kaldırma (konfigürasyon dosyaları dahil)
sudo apt-get purge paket_adi
# Chrome'u kaldırma
# Önce tam paket adını bulalım
dpkg -l | grep chrome
# Çıktı: google-chrome-stable
# Kaldırma işlemi
sudo apt remove google-chrome-stable
# Konfigürasyon dosyalarını da kaldırma
sudo apt-get purge google-chrome-stable
- apt update: Paket listesini günceller
- apt upgrade: Paketleri yükseltir
- apt --only-upgrade install paket_adi: Tek paket güncelleme
# Sistem güncellemesi
sudo apt update # Repo listesini günceller
sudo apt upgrade # Yükseltilebilir paketleri günceller
# Yükseltilebilir paketleri listeleme
apt list --upgradable
# Tek paket güncelleme
sudo apt --only-upgrade install firefox
# 1. Arşivi açma
bzip2 -d program.tar.bz2
tar xvf program.tar
# 2. Dizine girme
cd program_dizini
# 3. Yapılandırma
sudo ./configure
# Bu adım sistem uyumluluğunu kontrol eder
# 4. Derleme
sudo make
# Kaynak kodu derler
# 5. Kurulum
sudo make install
# Derlenmiş programı sisteme kurar
# Kaldırma
sudo make uninstall
# Ana repo dosyası
/etc/apt/sources.list
# Ek repo dizini
/etc/apt/sources.list.d/
deb http://http.kali.org/kali kali-rolling main contrib non-free-firmware
# Bileşenler:
# deb: Paket formatı (debian)
# http://...: Repo URL'si
# kali-rolling: Dağıtım sürümü
# main contrib...: Paket kategorileri
- Repo Dizini Oluşturma
sudo mkdir /var/localrepo
cd /var/localrepo
- Paketleri İndirme
sudo apt install golang-go -d --reinstall \
--allow-downgrades \
--allow-remove-essential \
--allow-change-held-packages
# Parametreler:
# -d: Sadece indir, kurma
# --reinstall: Yeniden kuruluma izin ver
# --allow-downgrades: Sürüm düşürmeye izin ver
# --allow-remove-essential: Temel paketleri kaldırmaya izin ver
# --allow-change-held-packages: Tutulan paketleri değiştirmeye izin ver
- Paketleri Local Repo'ya Taşıma
# Cache'den paketleri kopyalama
sudo cp /var/cache/apt/archives/*.deb /var/localrepo/
- Paket İndeksi Oluşturma
cd /var/localrepo
sudo dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
- Local Repo'yu Sisteme Ekleme
# Repo dosyası oluşturma
echo "deb [trusted=yes] file:///var/localrepo ./" | \
sudo tee /etc/apt/sources.list.d/local.list
# Repo listesini güncelleme
sudo apt update
- Offline paket yönetimi
- Hızlı kurulum
- Versiyon kontrolü
- Güvenlik
- Bant genişliği tasarrufu
- Sadece güvenilir repolardan paket kurun
- Root yerine sudo kullanın
- Sistem güncellemelerini düzenli yapın
- Kritik sistem paketlerini dikkatli yönetin
- Düzenli cache temizliği yapın
- Kullanılmayan paketleri kaldırın
- Repo listesini güncel tutun
- Gereksiz repoları devre dışı bırakın
# Bozuk bağımlılıkları düzeltme
sudo apt --fix-broken install
# Paket durumunu kontrol etme
sudo apt-get check
# Paket veritabanını yeniden oluşturma
sudo apt-get update --fix-missing
# Ana konfigürasyon dizini
cd /etc/apt/
# Önemli dosyalar
sources.list # Ana repo listesi
sources.list.d/ # Ek repo dizini
preferences # Paket öncelikleri
apt.conf.d/ # APT yapılandırma dosyaları
# Örnek kaynak satırı incelemesi
deb http://http.kali.org/kali kali-rolling main contrib non-free-firmware
# Bileşenlerin açıklaması:
# deb: İkili paket deposu
# http://...: Depo URL'si
# kali-rolling: Dağıtım sürümü
# main: Resmi desteklenen özgür yazılımlar
# contrib: Özgür ama bağımlılıkları özgür olmayan yazılımlar
# non-free-firmware: Özgür olmayan firmware paketleri
# Manuel repo ekleme
sudo touch /etc/apt/sources.list.d/ozel_repo.list
echo "deb [trusted=yes] http://repo.adres.com/ stable main" | \
sudo tee /etc/apt/sources.list.d/ozel_repo.list
# PPA ekleme (Ubuntu sistemlerde)
sudo add-apt-repository ppa:repo_adi
# Öncelik dosyası oluşturma
sudo nano /etc/apt/preferences.d/ozel_oncelik
# İçerik örneği:
Package: *
Pin: release o=Kali
Pin-Priority: 1000
# İndirilen paket dosyalarını temizleme
sudo apt-get clean
# Eski sürüm paketleri temizleme
sudo apt-get autoclean
# Gereksiz bağımlılıkları temizleme
sudo apt autoremove
# Cache boyutunu görüntüleme
du -sh /var/cache/apt/archives/
# Cache içeriğini listeleme
ls -lh /var/cache/apt/archives/*.deb
# Bağımlılıkları görmezden gelme
sudo dpkg -i --ignore-depends=paket_adi program.deb
# Belirli bir sürümü kurma
sudo apt install paket_adi=versiyon_numarası
# Kurulum simülasyonu
sudo apt install -s paket_adi
# Toplu kurulum
sudo apt install $(cat paket_listesi.txt)
# Kurulu paketleri yedekleme
dpkg --get-selections > kurulu_paketler.txt
# Paketleri geri yükleme
sudo dpkg --set-selections < kurulu_paketler.txt
sudo apt-get dselect-upgrade
# Paket bağımlılıklarını görüntüleme
apt-cache depends paket_adi
# Ters bağımlılıkları görüntüleme
apt-cache rdepends paket_adi
# Bağımlılık ağacını görüntüleme
apt-cache showpkg paket_adi
# Eksik bağımlılıkları kurma
sudo apt-get -f install
# Bozuk paketleri yeniden yapılandırma
sudo dpkg --configure -a
# Bağımlılık çakışmalarını çözme
sudo apt --fix-broken install
# Farklı sürümler için ayrı dizinler
sudo mkdir -p /var/localrepo/{stable,testing}
# Her dizin için indeks oluşturma
cd /var/localrepo/stable
sudo dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
cd /var/localrepo/testing
sudo dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
# Release dosyası oluşturma
cd /var/localrepo
apt-ftparchive release . > Release
# GPG ile imzalama (opsiyonel)
gpg --armor --detach-sign -o Release.gpg Release
# Paket imzalarını kontrol etme
apt-key list
# Yeni GPG anahtarı ekleme
sudo apt-key add anahtar.gpg
# Paket bütünlüğünü kontrol etme
debsums paket_adi
# Sadece güvenlik güncellemelerini listeleme
apt list --upgradable | grep security
# Güvenlik güncellemelerini kurma
sudo unattended-upgrade --dry-run
sudo unattended-upgrade
# Paket istatistikleri
apt-cache stats
# Kurulum logları
tail -f /var/log/apt/history.log
# Paket değişiklik logları
tail -f /var/log/dpkg.log
# En son kurulan paketler
grep "install " /var/log/dpkg.log
# Belirli bir paketin geçmişi
zgrep "paket_adi" /var/log/apt/history.log*
#!/bin/bash
# update_system.sh
# Sistem güncellemesi
apt update
apt upgrade -y
# Cache temizliği
apt autoremove -y
apt clean
# Log tutma
echo "Güncelleme tamamlandı: $(date)" >> /var/log/system_updates.log
#!/bin/bash
# bulk_package_ops.sh
# Paket listesini oku ve işle
while read package; do
apt install -y "$package"
if [ $? -eq 0 ]; then
echo "$package kuruldu"
else
echo "$package kurulum hatası" >> hata.log
fi
done < paket_listesi.txt
# Kilit dosyası sorunu
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
# Paket veritabanı yenileme
sudo rm -rf /var/lib/apt/lists/*
sudo apt update
# Bozuk paket kaldırma
sudo dpkg --remove --force-remove-reinstreq paket_adi
# Paket sistemi durumu
dpkg --audit
# Yarım kalan işlemleri tamamlama
dpkg --configure -a
# Paket veritabanı tutarlılık kontrolü
apt-get check
# Önbellek dizini yapısı
/var/cache/apt/archives/ # İndirilen paketler
/var/cache/apt/archives/partial/ # Kısmen indirilen paketler
/var/lib/apt/lists/ # Repo indeksleri
# Önbellek boyutu kontrolü
du -sh /var/cache/apt/archives/
du -sh /var/lib/apt/lists/
# Seçici önbellek temizleme
sudo apt-get clean --dry-run # Simülasyon modu
sudo apt-get clean specific_package*.deb
# Önbellek politikası ayarlama
sudo nano /etc/apt/apt.conf.d/20archive
# İçerik örneği:
APT::Archives::MaxSize "1000000";
APT::Archives::MinSize "500000";
APT::Archives::MaxAge "30";
# Paket yapılandırmasını yedekleme
debconf-get-selections > paket_ayarlari.txt
# Yapılandırmayı geri yükleme
debconf-set-selections < paket_ayarlari.txt
# Belirli bir paketin yapılandırmasını sıfırlama
sudo dpkg-reconfigure paket_adi
# Belirli dosyaları koruyarak kurulum
sudo apt install --protect-file=/path/to/file paket_adi
# Çakışan paketleri yönetme
sudo apt install -o Dpkg::Options::="--force-overwrite" paket_adi
# Özel dizine kurulum
sudo dpkg -i --instdir=/alternatif/dizin paket.deb
# Repo dizin yapısı oluşturma
sudo mkdir -p /var/www/repo/{conf,db,dists,pool}
cd /var/www/repo
# Repo konfigürasyonu
cat > conf/distributions << EOF
Origin: Özel Repo
Label: Özel
Suite: stable
Codename: custom
Architectures: amd64 i386
Components: main
Description: Özel Debian Deposu
EOF
# Paket ekleme
reprepro -b . includedeb custom /path/to/package.deb
# GPG anahtar çifti oluşturma
gpg --full-generate-key
# Repo imzalama
gpg --armor --export [email protected] > repo.gpg
sudo cp repo.gpg /var/www/repo/
# İstemcide anahtar ekleme
sudo apt-key add repo.gpg
# Paralel indirme ayarı
echo 'Acquire::Queue-Mode "host";' | \
sudo tee /etc/apt/apt.conf.d/99parallel-downloads
echo 'Acquire::http::Pipeline-Depth "5";' | \
sudo tee -a /etc/apt/apt.conf.d/99parallel-downloads
# Hız limiti ayarlama
echo 'Acquire::http::Dl-Limit "1000";' | \
sudo tee /etc/apt/apt.conf.d/76download-limits
# Eski kernel paketlerini temizleme
sudo apt autoremove --purge
# Kullanılmayan bağımlılıkları bulma
deborphan
# Büyük paketleri listeleme
dpkg-query -W --showformat='${Installed-Size}\t${Package}\n' | sort -nr | head
# Kurulum
sudo apt install unattended-upgrades
# Yapılandırma
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
# Örnek yapılandırma:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
"${distro_id}:${distro_codename}-updates";
};
# Otomatik güncellemeyi etkinleştirme
sudo dpkg-reconfigure -plow unattended-upgrades
#!/bin/bash
# system_maintenance.sh
# Log dosyası
LOG="/var/log/system_maintenance.log"
echo "Bakım başladı: $(date)" >> $LOG
# Sistem güncellemesi
apt update >> $LOG 2>&1
apt upgrade -y >> $LOG 2>&1
# Temizlik işlemleri
apt autoremove -y >> $LOG 2>&1
apt clean >> $LOG 2>&1
# Disk kullanımı kontrolü
df -h >> $LOG 2>&1
# Paket sistemi kontrolü
dpkg --audit >> $LOG 2>&1
echo "Bakım tamamlandı: $(date)" >> $LOG
# Debug modunda güncelleme
sudo apt update -o Debug::pkgProblemResolver=true
# Ayrıntılı kurulum logs
sudo apt install -o Debug::pkgProblemResolver=true paket_adi
# Tam debug çıktısı
sudo apt install -o Debug::pkgProblemResolver=true \
-o Debug::Acquire::http=true paket_adi
# APT log analizi
grep "Error\|Warning" /var/log/apt/term.log
# DPKG log analizi
grep "error\|warning" /var/log/dpkg.log
# Paket işlem geçmişi
less /var/log/apt/history.log
# Paket imzalarını kontrol
apt-key verify paket.deb
# Paket bütünlük kontrolü
debsums -c paket_adi
# Güvenlik güncellemelerini kontrol
apt list --upgradable | grep -i security
# Yüklü paketlerin güvenlik taraması
sudo apt install debian-security-support
check-support-status
# CVE kontrolü
sudo apt install cve-tracker
cve-checker paket_adi
#!/bin/bash
# advanced_package_management.sh
# Konfigürasyon
BACKUP_DIR="/var/backups/packages"
LOG_FILE="/var/log/package_management.log"
ERROR_LOG="/var/log/package_errors.log"
# Fonksiyonlar
backup_package_list() {
mkdir -p $BACKUP_DIR
dpkg --get-selections > "$BACKUP_DIR/package_list_$(date +%F).txt"
}
update_system() {
apt update >> $LOG_FILE 2>&1
apt upgrade -y >> $LOG_FILE 2>&1
}
clean_system() {
apt autoremove -y >> $LOG_FILE 2>&1
apt clean >> $LOG_FILE 2>&1
}
check_errors() {
if grep -i "error\|fail" $LOG_FILE; then
echo "Hatalar tespit edildi: $(date)" >> $ERROR_LOG
grep -i "error\|fail" $LOG_FILE >> $ERROR_LOG
fi
}
# Ana program
echo "İşlem başladı: $(date)" >> $LOG_FILE
backup_package_list
update_system
clean_system
check_errors
echo "İşlem tamamlandı: $(date)" >> $LOG_FILE
#!/bin/bash
# package_report.sh
REPORT_FILE="/var/log/package_report.txt"
echo "Paket Raporu - $(date)" > $REPORT_FILE
echo "===================" >> $REPORT_FILE
# Toplam paket sayısı
echo "Kurulu Paket Sayısı:" >> $REPORT_FILE
dpkg -l | grep "^ii" | wc -l >> $REPORT_FILE
# En büyük 10 paket
echo -e "\nEn Büyük 10 Paket:" >> $REPORT_FILE
dpkg-query -W --showformat='${Installed-Size}\t${Package}\n' | \
sort -nr | head >> $REPORT_FILE
# Son kurulan paketler
echo -e "\nSon Kurulan Paketler:" >> $REPORT_FILE
grep "install " /var/log/dpkg.log | tail -n 10 >> $REPORT_FILE
# Otomatik güncellenebilir paketler
echo -e "\nGüncellenebilir Paketler:" >> $REPORT_FILE
apt list --upgradable >> $REPORT_FILE
# Tüm paket listesini yedekleme
dpkg --get-selections "*" > ~/paket_listesi.txt
sudo cp /var/lib/apt/extended_states ~/extended_states.backup
# APT kaynakları yedekleme
sudo tar -czf ~/apt_sources_backup.tar.gz /etc/apt/sources.list*
# Paket önbelleklerini yedekleme
sudo tar -czf ~/apt_cache_backup.tar.gz /var/cache/apt/archives/*.deb
# Paket listesini geri yükleme
sudo dpkg --clear-selections
sudo dpkg --set-selections < ~/paket_listesi.txt
sudo apt-get dselect-upgrade
# APT kaynaklarını geri yükleme
sudo tar -xzf ~/apt_sources_backup.tar.gz -C /
sudo apt update
# /etc/cron.daily/system_maintenance
#!/bin/bash
# Günlük bakım işlemleri
apt-get update
apt-get -y upgrade
apt-get -y autoremove
apt-get clean
# Disk temizliği
find /var/log -type f -name "*.log" -mtime +30 -delete
find /var/cache/apt/archives/ -type f -name "*.deb" -delete
# Sistem kontrolü
dpkg --audit
apt-get check
# Sistem kaynak kullanımı raporu
#!/bin/bash
echo "Sistem Performans Raporu - $(date)"
echo "================================"
# CPU kullanımı
top -bn1 | head -n 5
# Bellek kullanımı
free -h
# Disk kullanımı
df -h
# En çok kaynak kullanan süreçler
ps aux --sort=-%mem | head -n 5
-
Repo Güvenliği
# Sadece güvenilir repolar kullanın # Her yeni repo için GPG anahtarını doğrulayın apt-key fingerprint ANAHTAR_ID
-
Düzenli Güncelleme Politikası
# Günlük güvenlik güncellemeleri unattended-upgrades --dry-run # Haftalık tam sistem güncellemesi apt update && apt upgrade -y
-
Paket Doğrulama
# Kurulum öncesi paket bütünlüğü kontrolü dpkg --verify paket_adi # İmza kontrolü apt-key verify paket.deb
# 1. Repo listesi kontrolü
ls -l /etc/apt/sources.list.d/
# 2. Paket imzaları kontrolü
apt-key list
# 3. Şüpheli paketleri tespit
debsums -c
# 4. Güvenlik güncellemeleri kontrolü
apt list --upgradable | grep security
-
Düzenli Temizlik
# Haftalık temizlik rutini apt autoremove apt clean dpkg --purge $(dpkg -l | awk '/^rc/ {print $2}')
-
Önbellek Optimizasyonu
# Önbellek boyutu sınırlama echo 'APT::Cache-Limit "100000000";' > /etc/apt/apt.conf.d/70cache-limit
-
Hızlı Kurulum
# Paralel indirme echo 'Acquire::Queue-Mode "host";' > /etc/apt/apt.conf.d/99parallel
-
Paket Kilitleri
# Kilit dosyalarını temizleme sudo rm /var/lib/dpkg/lock sudo rm /var/lib/apt/lists/lock sudo rm /var/cache/apt/archives/lock
-
Bozuk Bağımlılıklar
# Bağımlılık onarımı sudo apt --fix-broken install sudo dpkg --configure -a
-
Repository Sorunları
# Repo listesini yenileme sudo rm -rf /var/lib/apt/lists/* sudo apt update
Linux'ta her dosya ve dizin için üç tür kullanıcı grubu vardır:
- Owner (Sahip)
- Group (Grup)
- Others (Diğerleri)
r (read) = 4 # Okuma izni
w (write) = 2 # Yazma izni
x (execute) = 1 # Çalıştırma izni
ls -l
# Çıktı örneği:
# -rwxr-xr-- 1 kullanici grup 4096 Jan 1 12:00 dosya.txt
Bu çıktıyı inceleyelim:
- İlk karakter (
-
): Dosya tipini gösterir-
: Normal dosyad
: Dizinl
: Sembolik link
- Sonraki 9 karakter: İzinleri gösterir
rwx
: Sahibin izinleri (4+2+1=7)r-x
: Grubun izinleri (4+0+1=5)r--
: Diğerlerinin izinleri (4+0+0=4)
# Sayısal yöntem
chmod 754 dosya.txt
# 7 (rwx) - Sahip için tam yetki
# 5 (r-x) - Grup için okuma ve çalıştırma
# 4 (r--) - Diğerleri için sadece okuma
# Sembolik yöntem
chmod u+x dosya # Sahibine çalıştırma izni ekle
chmod g-w dosya # Gruptan yazma iznini kaldır
chmod o=r dosya # Diğerlerine sadece okuma izni ver
chmod a+x dosya # Herkese çalıştırma izni ekle
# SUID biti ayarlama
chmod u+s /usr/bin/passwd
# Çıktı ls -l ile:
# -rwsr-xr-x
# Örnek kullanım:
# passwd komutu SUID biti ile çalışır
# Normal kullanıcı root yetkisiyle şifre değiştirebilir
# SGID biti ayarlama
chmod g+s /shared/folder
# Çıktı ls -l ile:
# drwxrws---
# Örnek:
# /shared/folder altında oluşturulan tüm dosyalar
# otomatik olarak dizinin grubu ile aynı gruba sahip olur
# Sticky bit ayarlama
chmod +t /tmp
# Çıktı ls -l ile:
# drwxrwxrwt
# Örnek:
# /tmp dizininde herkes dosya oluşturabilir
# ama sadece dosya sahibi silebilir
ACL, standart Linux izin sisteminin ötesinde daha detaylı izin kontrolü sağlar.
# ACL'leri görüntüleme
getfacl dosya.txt
# Çıktı örneği:
# file: dosya.txt
# owner: kullanici
# group: grup
# user::rwx
# user:john:r--
# group::r-x
# mask::rwx
# other::r--
# Kullanıcı için ACL ekleme
setfacl -m u:john:rx dosya.txt
# Grup için ACL ekleme
setfacl -m g:proje:rwx dosya.txt
# Tüm ACL'leri kaldırma
setfacl -b dosya.txt
# Dizin ve alt öğelerine ACL uygulama
setfacl -Rm u:john:rx dizin/
Sudo, normal kullanıcıların belirli komutları root yetkisiyle çalıştırmasını sağlar.
# Sudo dosyasını düzenleme
visudo
# Örnek kurallar:
# Tek komut izni
john ALL=(ALL) /usr/bin/apt
# Şifresiz komut çalıştırma
john ALL=(ALL) NOPASSWD: /usr/bin/systemctl status
# Grup izinleri
%sudo ALL=(ALL:ALL) ALL
# Belirli komutları reddetme
john ALL=(ALL) ALL,!/usr/bin/passwd root
# Komut çalıştırma
sudo apt update
# Root shell'e geçiş
sudo -i
# Başka kullanıcı olarak çalıştırma
sudo -u postgres psql
# Sudo log inceleme
sudo grep sudo /var/log/auth.log
# Proje dizini oluşturma
sudo mkdir /proje
sudo groupadd proje_ekibi
sudo chown root:proje_ekibi /proje
sudo chmod 2775 /proje
# Açıklama:
# 2: SGID biti
# 775: rwxrwxr-x izinleri
# Tüm yeni dosyalar proje_ekibi grubuna ait olur
# Apache dizini güvenliği
sudo chown -R root:www-data /var/www/html
sudo chmod -R 750 /var/www/html
sudo chmod -R g+s /var/www/html
# SSL sertifika dizini
sudo chmod 700 /etc/ssl/private
sudo chown root:root /etc/ssl/private
# Log dizini izinleri
sudo chmod -R 640 /var/log/*
sudo chown -R root:adm /var/log/*
# Özel log dosyası
sudo touch /var/log/ozel.log
sudo chown app_user:app_group /var/log/ozel.log
sudo chmod 660 /var/log/ozel.log
Tar, Linux sistemlerde en yaygın kullanılan arşivleme aracıdır.
# Arşiv oluşturma
tar -cvf arsiv.tar dosyalar/
# c: create (oluştur)
# v: verbose (detaylı göster)
# f: file (dosya adı belirt)
# Sıkıştırılmış arşiv oluşturma
tar -czvf arsiv.tar.gz dosyalar/ # gzip sıkıştırma
tar -cjvf arsiv.tar.bz2 dosyalar/ # bzip2 sıkıştırma
tar -cJvf arsiv.tar.xz dosyalar/ # xz sıkıştırma
# Arşiv içeriğini listeleme
tar -tvf arsiv.tar
# Arşiv açma
tar -xvf arsiv.tar
tar -xzvf arsiv.tar.gz
tar -xjvf arsiv.tar.bz2
# Belirli dosyaları arşivleme
tar -czvf kod.tar.gz *.py *.js
# Hariç tutma
tar -czvf yedek.tar.gz /home --exclude=/home/*/tmp
# Arşivi belirli dizine açma
tar -xzvf arsiv.tar.gz -C /hedef/dizin/
# Arşiv içinden tek dosya çıkarma
tar -xzvf arsiv.tar.gz dosya.txt
Rsync, güçlü ve verimli bir dosya senkronizasyon aracıdır.
# Yerel kopyalama
rsync -av kaynak/ hedef/
# a: archive mode (arşiv modu)
# v: verbose (detaylı göster)
# Uzak sunucuya yedekleme
rsync -avz -e ssh kaynak/ kullanici@sunucu:/hedef/
# z: sıkıştırma kullan
# İlerlemeyi gösterme
rsync -avz --progress kaynak/ hedef/
# Kuru çalıştırma (dry-run)
rsync -avzn kaynak/ hedef/
# Ayna yedekleme (silinen dosyaları hedefte de sil)
rsync -av --delete kaynak/ hedef/
# Belirli dosyaları hariç tutma
rsync -av --exclude='*.tmp' --exclude='temp/' kaynak/ hedef/
# Yedek alma ve eski dosyaları koruma
rsync -av --backup --backup-dir=/yedek/$(date +%Y%m%d) kaynak/ hedef/
# Bant genişliği sınırlama
rsync -av --bwlimit=1000 kaynak/ hedef/
DD, düşük seviyeli kopyalama aracıdır ve tam disk imajı almak için kullanılır.
# Tam disk imajı alma
dd if=/dev/sda of=/yedek/disk.img bs=4M status=progress
# Sıkıştırılmış imaj alma
dd if=/dev/sda bs=4M | gzip > disk.img.gz
# İmajı geri yükleme
dd if=disk.img of=/dev/sda bs=4M status=progress
# Sıkıştırılmış imajı geri yükleme
gunzip -c disk.img.gz | dd of=/dev/sda bs=4M status=progress
# Crontab düzenleme
crontab -e
# Örnek zamanlamalar:
# Her gün gece 2'de yedek alma
0 2 * * * tar -czf /yedek/gunluk_$(date +\%Y\%m\%d).tar.gz /veri/
# Her Pazar tam yedek, diğer günler artımlı yedek
0 1 * * 0 rsync -av --delete /veri/ /yedek/tam/
0 1 * * 1-6 rsync -av --link-dest=/yedek/tam /veri/ /yedek/artimli/$(date +\%Y\%m\%d)/
#!/bin/bash
# backup.sh
# Değişkenler
BACKUP_DIR="/yedek"
SOURCE_DIR="/veri"
DATE=$(date +%Y%m%d)
LOG_FILE="/var/log/backup.log"
# Yedek dizini kontrolü
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p "$BACKUP_DIR"
fi
# Yedekleme fonksiyonu
do_backup() {
echo "Yedekleme başladı: $(date)" >> "$LOG_FILE"
# Tam yedek alma
tar -czf "$BACKUP_DIR/tam_$DATE.tar.gz" "$SOURCE_DIR" \
--exclude="*.tmp" \
--exclude="temp/" \
2>> "$LOG_FILE"
# Eski yedekleri temizleme (30 günden eski)
find "$BACKUP_DIR" -name "tam_*.tar.gz" -mtime +30 -delete
echo "Yedekleme tamamlandı: $(date)" >> "$LOG_FILE"
}
# Disk alanı kontrolü
check_space() {
SPACE=$(df -h "$BACKUP_DIR" | awk 'NR==2 {print $4}')
if [[ "${SPACE%G}" -lt 10 ]]; then
echo "Uyarı: Yetersiz disk alanı" >> "$LOG_FILE"
exit 1
fi
}
# Ana program
check_space
do_backup
-
3-2-1 Kuralı
- 3 kopya yedek
- 2 farklı medya türü
- 1 offsite yedek
-
Yedek Doğrulama
# Arşiv bütünlük kontrolü
tar -tvf yedek.tar.gz
# Checksum oluşturma ve kontrol
sha256sum yedek.tar.gz > yedek.sha256
sha256sum -c yedek.sha256
- Yedek Rotasyonu
# Günlük-Haftalık-Aylık rotasyon scripti
#!/bin/bash
# Günlük yedekler (son 7 gün)
find /yedek/gunluk -mtime +7 -delete
# Haftalık yedekler (son 4 hafta)
find /yedek/haftalik -mtime +28 -delete
# Aylık yedekler (son 12 ay)
find /yedek/aylik -mtime +365 -delete
- Felaket Kurtarma Planı
# Sistem konfigürasyon yedekleme
tar -czf /yedek/sistem_conf.tar.gz \
/etc/fstab \
/etc/passwd \
/etc/group \
/etc/shadow \
/etc/ssh/sshd_config
# Paket listesi yedekleme
dpkg --get-selections > /yedek/paket_listesi.txt
Vim, güçlü ve özelleştirilebilir bir metin editörüdür.
- Normal Mod (Başlangıç modu)
- Insert Mod (Düzenleme modu)
- Visual Mod (Seçim modu)
- Command Mod (Komut modu)
# Dosya açma
vim dosya.txt
# Temel düzenleme komutları
i # Insert moduna geç
Esc # Normal moda dön
:w # Kaydet
:q # Çık
:wq # Kaydet ve çık
:q! # Kaydetmeden çık
u # Geri al
Ctrl + r # İleri al
# Metin düzenleme
dd # Satır sil
yy # Satır kopyala
p # Yapıştır
/metin # Metin ara
n # Sonraki eşleşme
:%s/eski/yeni/g # Tüm dosyada değiştir
# Çoklu dosya
:sp dosya2.txt # Yatay bölme
:vsp dosya2.txt # Dikey bölme
Ctrl + w + ok # Pencereler arası geçiş
# ~/.vimrc dosyası
syntax on # Sözdizimi renklendirme
set number # Satır numaraları
set autoindent # Otomatik girinti
set tabstop=4 # Tab genişliği
set expandtab # Tab'ları boşluğa çevir
set hlsearch # Arama vurgulama
Nano, başlangıç seviyesi kullanıcılar için daha basit bir editördür.
# Dosya açma
nano dosya.txt
# Temel komutlar
Ctrl + O # Kaydet
Ctrl + X # Çık
Ctrl + K # Satır kes
Ctrl + U # Yapıştır
Ctrl + W # Ara
Ctrl + \ # Değiştir
Ctrl + G # Yardım
# ~/.nanorc dosyası
set linenumbers # Satır numaraları
set autoindent # Otomatik girinti
set tabsize 4 # Tab genişliği
set backup # Yedek dosya oluştur
Emacs, çok yönlü ve programlanabilir bir editördür.
# Dosya açma
emacs dosya.txt
# Temel komutlar
C-x C-s # Kaydet (Ctrl + x, Ctrl + s)
C-x C-c # Çık
C-k # Satır kes
C-y # Yapıştır
C-s # İleri ara
C-r # Geri ara
C-g # İşlemi iptal et
M-x speedbar # Dosya gezgini
M-x shell # Terminal
M-x compile # Kod derleme
M-x gdb # Debugger
# cat komutu
cat dosya.txt # Tüm içeriği göster
cat -n dosya.txt # Satır numaralı göster
cat dosya1.txt dosya2.txt # Birden fazla dosya
# less komutu
less dosya.txt # Sayfa sayfa görüntüle
/aranacak # Metin ara
n # Sonraki eşleşme
q # Çık
# head ve tail
head -n 5 dosya.txt # İlk 5 satır
tail -n 10 dosya.txt # Son 10 satır
tail -f /var/log/syslog # Canlı log takibi
# grep ile arama
grep "metin" dosya.txt # Basit arama
grep -i "metin" dosya.txt # Büyük/küçük harf duyarsız
grep -r "metin" dizin/ # Özyinelemeli arama
grep -v "metin" dosya.txt # Eşleşmeyen satırlar
# sed ile değiştirme
sed 's/eski/yeni/' dosya.txt # İlk eşleşmeyi değiştir
sed 's/eski/yeni/g' dosya.txt # Tüm eşleşmeleri değiştir
sed -i 's/eski/yeni/g' dosya.txt # Dosyayı değiştir
# awk ile alan işleme
awk '{print $1}' dosya.txt # İlk sütun
awk -F":" '{print $1}' /etc/passwd # Kullanıcı adları
awk '$3 > 1000 {print $1}' dosya.txt # Koşullu yazdırma
#!/bin/bash
# log_analiz.sh
# Hata sayısını bul
echo "Hata Sayısı:"
grep -i "error" /var/log/syslog | wc -l
# Son 10 başarısız giriş
echo -e "\nSon Başarısız Girişler:"
grep "Failed password" /var/log/auth.log | tail -n 10
# IP adresleri ve sayıları
echo -e "\nBaşarısız Giriş Yapan IP'ler:"
grep "Failed password" /var/log/auth.log | \
awk '{print $11}' | sort | uniq -c | sort -nr
#!/bin/bash
# dosya_duzenle.sh
# Tüm Python dosyalarında string değiştirme
find . -name "*.py" -type f -exec sed -i 's/eski_string/yeni_string/g' {} \;
# Tüm dosyalarda satır sonu düzeltme
find . -type f -exec dos2unix {} \;
# Dosya başlıklarına tarih ekleme
for file in *.txt; do
echo "# $(date) - $file" | cat - "$file" > temp && mv temp "$file"
done
# Temel derleme adımları
./configure # Sistem kontrolü ve Makefile oluşturma
make # Kaynak kodu derleme
sudo make install # Programı sisteme kurma
# Örnek: Nginx derleme
tar xzf nginx-1.20.1.tar.gz
cd nginx-1.20.1
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module
make
sudo make install
# Derleme bağımlılıklarını kurma
sudo apt install build-essential # Temel derleme araçları
sudo apt install libssl-dev # SSL kütüphanesi
sudo apt install zlib1g-dev # Sıkıştırma kütüphanesi
# Kurulu programları listeleme
which nginx # Program konumunu bulma
whereis python # Tüm ilgili dosyaları bulma
type bash # Komut tipini gösterme
# Program kaldırma
sudo make uninstall # Derlenmiş programı kaldırma
sudo rm -rf /usr/local/nginx # Manuel temizlik
# Mevcut PATH'i görüntüleme
echo $PATH
# Geçici PATH ekleme
export PATH=$PATH:/yeni/dizin
# Kalıcı PATH ekleme
echo 'export PATH=$PATH:/yeni/dizin' >> ~/.bashrc
source ~/.bashrc
# Sistem geneli PATH ekleme
sudo echo 'export PATH=$PATH:/yeni/dizin' > /etc/profile.d/custom_path.sh
# Çevre değişkenlerini görüntüleme
env # Tüm değişkenler
echo $HOME # Tek değişken
# Geçici değişken tanımlama
export JAVA_HOME=/usr/lib/jvm/java-11
# Kalıcı değişken tanımlama
echo 'export JAVA_HOME=/usr/lib/jvm/java-11' >> ~/.bashrc
# Sistem geneli değişken
sudo echo 'JAVA_HOME=/usr/lib/jvm/java-11' > /etc/environment
# Servis durumu kontrolü
systemctl status nginx
systemctl is-active mysql
systemctl is-enabled apache2
# Servis yönetimi
systemctl start postgresql
systemctl stop mongodb
systemctl restart docker
systemctl reload nginx # Konfigürasyonu yeniden yükle
# Otomatik başlatma
systemctl enable redis
systemctl disable memcached
# /etc/systemd/system/myapp.service
[Unit]
Description=My Custom Application
After=network.target
[Service]
Type=simple
User=myapp
ExecStart=/usr/local/bin/myapp
Restart=always
WorkingDirectory=/opt/myapp
[Install]
WantedBy=multi-user.target
# Servisi etkinleştirme
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
# Process listeleme
ps aux # Tüm processler
ps -ef | grep nginx # Belirli process arama
pstree # Process ağacı
# Sistem kaynakları
top # Anlık sistem durumu
htop # Gelişmiş sistem monitörü
free -h # Bellek kullanımı
df -h # Disk kullanımı
# Process sonlandırma
kill PID # Normal sonlandırma (SIGTERM)
kill -9 PID # Zorla sonlandırma (SIGKILL)
killall nginx # İsme göre sonlandırma
# Process önceliği
nice -n 10 ./script.sh # Düşük öncelikle başlat
renice -n -5 PID # Çalışan processin önceliğini değiştir
# Arkaplan yönetimi
command & # Arkaplanda başlat
Ctrl + Z # Processi durdur
bg # Arkaplanda devam ettir
fg # Önplana getir
jobs # Arkaplan işlemlerini listele
# Screen kullanımı
screen # Yeni oturum
screen -ls # Oturumları listele
Ctrl + a + d # Oturumdan ayrıl
screen -r ID # Oturuma geri dön
# Mevcut hedefi görüntüleme
systemctl get-default
# Hedef değiştirme
systemctl set-default multi-user.target # CLI modu
systemctl set-default graphical.target # GUI modu
# Acil durum hedefleri
systemctl isolate emergency.target
systemctl isolate rescue.target
# /etc/rc.local alternatifi
sudo nano /etc/systemd/system/rc-local.service
[Unit]
Description=RC Local
After=network.target
[Service]
Type=oneshot
ExecStart=/etc/rc.local
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
# rc.local oluşturma
sudo nano /etc/rc.local
#!/bin/bash
# Özel başlangıç komutları
exit 0
sudo chmod +x /etc/rc.local
sudo systemctl enable rc-local
#!/bin/bash
# update_apps.sh
# Log dosyası
LOG="/var/log/app_updates.log"
# Güncelleme fonksiyonu
update_app() {
echo "$(date): $1 güncelleniyor..." >> $LOG
cd /opt/$1
git pull
make
make install
echo "$(date): $1 güncelleme tamamlandı" >> $LOG
}
# Uygulamaları güncelle
for app in app1 app2 app3; do
if [ -d "/opt/$app" ]; then
update_app $app
fi
done
#!/bin/bash
# process_monitor.sh
# Kontrol edilecek process
PROCESS="nginx"
EMAIL="[email protected]"
# Process kontrolü
if ! pgrep -x "$PROCESS" > /dev/null; then
echo "UYARI: $PROCESS çalışmıyor!"
systemctl start $PROCESS
echo "Process yeniden başlatıldı" | \
mail -s "Process Uyarısı" $EMAIL
fi
# Kaynak kullanımı kontrolü
MEMORY=$(ps aux | grep $PROCESS | awk '{sum+=$4} END {print sum}')
if [ "${MEMORY%.*}" -gt 80 ]; then
echo "UYARI: Yüksek bellek kullanımı!" | \
mail -s "Bellek Uyarısı" $EMAIL
fi
/ # Kök dizin
├── bin/ # Temel sistem komutları
├── boot/ # Önyükleme dosyaları
├── dev/ # Aygıt dosyaları
├── etc/ # Sistem yapılandırması
├── home/ # Kullanıcı dizinleri
├── lib/ # Sistem kütüphaneleri
├── media/ # Çıkarılabilir medya
├── mnt/ # Geçici bağlama noktaları
├── opt/ # İsteğe bağlı yazılımlar
├── proc/ # Sistem bilgileri
├── root/ # Root kullanıcı dizini
├── sbin/ # Sistem yönetimi komutları
├── srv/ # Servis verileri
├── tmp/ # Geçici dosyalar
├── usr/ # Kullanıcı programları
└── var/ # Değişken veriler
- /etc Dizini
/etc/
├── passwd # Kullanıcı bilgileri
├── shadow # Şifre bilgileri
├── group # Grup bilgileri
├── sudoers # Sudo yapılandırması
├── ssh/ # SSH yapılandırması
├── nginx/ # Nginx yapılandırması
├── apache2/ # Apache yapılandırması
└── systemd/ # SystemD yapılandırması
- /var Dizini
/var/
├── log/ # Sistem logları
├── cache/ # Uygulama önbellekleri
├── spool/ # Kuyruk dosyaları
├── www/ # Web dosyaları
└── backups/ # Yedekler
- /usr Dizini
/usr/
├── bin/ # Kullanıcı komutları
├── sbin/ # Sistem komutları
├── lib/ # Kütüphaneler
├── local/ # Yerel kurulumlar
└── share/ # Paylaşılan veriler
# Sistem logları
/var/log/syslog # Genel sistem logları
/var/log/auth.log # Kimlik doğrulama logları
/var/log/kern.log # Kernel logları
/var/log/dmesg # Boot logları
# Uygulama logları
/var/log/apache2/ # Apache web sunucu logları
/var/log/nginx/ # Nginx web sunucu logları
/var/log/mysql/ # MySQL veritabanı logları
/var/log/postgresql/ # PostgreSQL veritabanı logları
# Canlı log takibi
tail -f /var/log/syslog
tail -f /var/log/auth.log | grep "Failed password"
# Journalctl kullanımı
journalctl # Tüm logları göster
journalctl -u nginx # Nginx logları
journalctl -f # Canlı log takibi
journalctl --since "1 hour ago" # Son 1 saatin logları
# logrotate yapılandırması
/etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
- Nmap (Network Mapper)
# Temel tarama
nmap 192.168.1.0/24
# Detaylı tarama
nmap -sV -sC -O -p- 192.168.1.100
# -sV: Servis/versiyon tespiti
# -sC: Varsayılan scriptlerle tarama
# -O: İşletim sistemi tespiti
# -p-: Tüm portları tara
# Gizli tarama
nmap -sS -Pn -n --data-length 15 target.com
- Nikto (Web Sunucu Tarayıcı)
# Temel web taraması
nikto -h http://target.com
# SSL ile tarama
nikto -h https://target.com -ssl
# Detaylı rapor
nikto -h target.com -Format htm -output rapor.html
- Recon-ng (Bilgi Toplama Çerçevesi)
# Recon-ng başlatma
recon-ng
# Temel komutlar
workspaces create proje1
marketplace search
marketplace install recon/domains-hosts/google_site_web
modules load recon/domains-hosts/google_site_web
- SQLMap (SQL Injection Aracı)
# Temel tarama
sqlmap -u "http://target.com/page.php?id=1"
# Otomatik veritabanı çıkarma
sqlmap -u "http://target.com/page.php?id=1" --dbs
# Tablo ve sütun çıkarma
sqlmap -u "http://target.com/page.php?id=1" \
-D database_name --tables --columns
# Shell alma
sqlmap -u "http://target.com/page.php?id=1" --os-shell
- Burp Suite (Web Güvenlik Testi)
# Proxy yapılandırması
export HTTPS_PROXY="http://127.0.0.1:8080"
# SSL sertifikası kurulumu
curl http://burp/cert -o burp.der
openssl x509 -in burp.der -inform DER -out burp.pem
- OWASP ZAP
# Komut satırından başlatma
zap.sh -daemon -host 0.0.0.0 -port 8080
# API kullanımı
curl 'http://localhost:8080/JSON/core/action/accessUrl/?url=http://target.com'
- Hashcat
# MD5 hash kırma
hashcat -m 0 hash.txt wordlist.txt
# Windows NTLM hash kırma
hashcat -m 1000 ntlm.txt wordlist.txt
# GPU hızlandırma
hashcat -m 0 -d 1 hash.txt wordlist.txt
# Kural tabanlı saldırı
hashcat -m 0 hash.txt -r rules/best64.rule wordlist.txt
- John the Ripper
# Shadow dosyası kırma
john /etc/shadow
# Belirli format
john --format=md5crypt hash.txt
# Wordlist kullanma
john --wordlist=wordlist.txt hash.txt
- Aircrack-ng Suite
# Monitor moda geçiş
airmon-ng start wlan0
# Ağları tarama
airodump-ng wlan0mon
# WPA handshake yakalama
airodump-ng -c 1 --bssid MAC -w capture wlan0mon
aireplay-ng -0 2 -a MAC wlan0mon
# WPA şifre kırma
aircrack-ng -w wordlist.txt capture-01.cap
- Wifite
# Otomatik tarama ve saldırı
wifite --dict wordlist.txt
# Belirli ağa saldırı
wifite --bssid MAC --dict wordlist.txt
- Wireshark
# Komut satırından yakalama
tshark -i eth0 -w capture.pcap
# Belirli protokol filtreleme
tshark -i eth0 -f "port 80"
# SSL trafiği analizi
tshark -i eth0 -f "port 443" -o ssl.keys_list:443,private.key
- Tcpdump
# Temel paket yakalama
tcpdump -i eth0
# HTTP trafiği
tcpdump -i eth0 port 80 -w http.pcap
# Belirli IP filtreleme
tcpdump host 192.168.1.100
- IPTables
# Temel kurallar
iptables -L
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP
# NAT kuralları
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Kural kaydetme
iptables-save > /etc/iptables/rules.v4
- UFW (Uncomplicated Firewall)
# Temel kullanım
ufw enable
ufw allow 22/tcp
ufw deny from 192.168.1.100
- Snort
# Konfigürasyon testi
snort -T -c /etc/snort/snort.conf
# Paket yakalama ve analiz
snort -dev -l /var/log/snort
# Kural bazlı çalıştırma
snort -c /etc/snort/snort.conf -l /var/log/snort
- Autopsy
# Yeni vaka oluşturma
autopsy -h localhost -p 9999
# Komut satırından analiz
autopsy -t disk.img -o rapor.txt
- DD
# Disk imajı alma
dd if=/dev/sda of=disk.img bs=4M status=progress
# Belirli bölüm imajı
dd if=/dev/sda1 of=partition.img bs=4M
- Volatility
# Process listesi
volatility -f memory.dump imageinfo
volatility -f memory.dump pslist
# Network bağlantıları
volatility -f memory.dump netscan
# Şifre dökümü
volatility -f memory.dump hashdump
- SET (Social Engineering Toolkit)
# Toolkit başlatma
setoolkit
# Phishing saldırısı
1) Social-Engineering Attacks
2) Website Attack Vectors
3) Credential Harvester Attack Method
- GoPhish
# Kampanya oluşturma
gophish &
# Web arayüzü: http://localhost:3333
- Dradis
# Proje başlatma
dradis start
# Rapor oluşturma
dradis export -f html -t pentest
- MagicTree
# Yeni proje
magictree
# Test sonuçlarını içe aktarma ve raporlama
#!/bin/bash
# web_test.sh
TARGET="http://target.com"
# Nikto taraması
nikto -h $TARGET -o nikto.txt
# SQLMap taraması
sqlmap -u "$TARGET" --batch --dbs -o sqlmap.txt
# Dirb ile dizin taraması
dirb $TARGET -o dirb.txt
# Sonuçları birleştir
echo "Web Güvenlik Raporu" > rapor.txt
cat nikto.txt sqlmap.txt dirb.txt >> rapor.txt
#!/bin/bash
# network_test.sh
NETWORK="192.168.1.0/24"
# Nmap taraması
nmap -sV -sC -O $NETWORK -oA nmap_scan
# Açık portları izle
tcpdump -i eth0 -w network.pcap &
# Güvenlik duvarı testi
for port in {1..1000}; do
nc -zv $TARGET $port 2>&1 | grep "succeeded"
done