Beyaz şapkalı hacker olmayı uygulayarak öğren
Let’s Hack Me, beyaz şapkalı hackerlar için uygulamalı bir akademidir. Her ders önce gerçek terimleri açıklar, örnek komutları çıktılarıyla gösterir ve gerçeğe yakın bir Linux simülatöründe pratik yaptırır.
Linux 101: komut satırı ve sistem yönetimi
Sıfırdan bir kurs: komut satırı, dosyalar, kullanıcılar ve izinler, yazılım kurmak, kabuk, metin araçları, ağ, düzenleyiciler, süreçler, hizmetler ve zamanlanmış görevler.
Bölüm 1: Giriş
- 1.1 Linux nedir? — Donanım, yazılım, işletim sistemi ve çekirdek; Linux'un nereden geldiği (Unix, GNU, Linus Torvalds) ve neden dünyadaki sunucuların çoğunda…
- 1.2 Linux dağıtımları — Neden birçok Linux var: dağıtım, paket, paket yöneticisi ve depo; Debian ve Red Hat aileleri, LTS sürümler, masaüstü ve sunucu. Uygulama:…
- 1.3 Çekirdek, kabuk ve terminal — Terminal, kabuk ve çekirdek arasındaki fark; komut satırı ve grafik arayüz; istemi okumak; bir komutu yazmakla çıktısını görmek arasında…
Bölüm 2: Komut satırına başlangıç
- 2.1 Komut satırına giriş — Bir komut satırı oturumu nasıl işler: komut çalıştırmak, çıktısını ve hata mesajlarını okumak, büyük/küçük harf duyarlılığı, komut…
- 2.2 Argümanlar ve seçenekler — Bir komut satırının dilbilgisi: komut adı, seçenekler (kısa, uzun, birleşik, değer alan) ve argümanlar; gizli dosyalar. Uygulama: -l, -a,…
- 2.3 Komut satırında yardım almak — Kılavuz sayfaları ve nasıl okundukları, --help, komut bulmak için whatis ve apropos, kılavuz sayfası olmayan kabuk yerleşik komutları…
- 2.4 Metin dosyalarına bakmak: cat, less ve more — Metin dosyası ve ikili dosya; cat ile dosyaları yazdırmak ve birleştirmek (-n); uzun dosyaları less ve more sayfalayıcılarıyla sayfa sayfa…
Bölüm 3: Dosyalar ve dosya sistemi
- 3.1 Linux dosya sistemi hiyerarşisi — / ile başlayan tek bir ağaç: /etc, /home, /root, /var, /tmp, /usr, /bin, /dev, /proc ve /boot dizinlerinde ne durduğu (FHS); disklerin,…
- 3.2 Mutlak ve göreli yollar — Ağaçtaki adresler olarak yollar: /'den başlayan mutlak yollar, bulunduğun yerden başlayan göreli yollar, . .. ~ ve - kısayolları; pwd ve…
- 3.3 Dosya ve dizinlerle çalışmak — Oluşturmak, kopyalamak, taşımak, yeniden adlandırmak ve silmek: touch, mkdir (-p), cp (-r), mv, rm (-r, -i) ve rmdir; komut satırında…
- 3.4 Yollarda ve dosya adlarında boşluklar — Boşluğun bir adı neden iki argümana böldüğü ve onu bir arada tutmanın üç yolu: çift tırnak, tek tırnak ve ters eğik çizgi; ls'in ve Tab…
- 3.5 Joker karakterler ve yol genişletme — Dosya adlarını kabuğa doldurtmak: * ? ve [ ] var olan dosyalarla eşleşir (globbing), { } kelime listeleri üretir, ~ ev dizinine açılır;…
- 3.6 Metne bakmanın başka yolları: head, tail, wc, sort ve uniq — Klasik küçük araçlar: dosyanın başı ve sonu, satır ve kelime saymak, alfabetik ve sayısal sıralamak, tekrarları atmak ya da saymak; | ile…
- 3.7 Sabit ve sembolik bağlantılar — Bir adın bir dosyayı nasıl gösterdiği (inode), aynı veriye ikinci ad olarak sabit bağlantı, bir yola tabela olarak sembolik bağlantı,…
- 3.8 Dosyaları sıkıştırmak ve arşivlemek — Arşiv ile sıkıştırma arasındaki fark: birçok dosyayı tek dosya olarak paketlemek (c), listelemek (t) ve çıkarmak (x) için tar; sıkıştırmak…
- 3.9 Dosya sisteminde arama: find ve locate — find ile dosyaları ada, türe, boyuta, yaşa ve sahibe göre bulmak, -exec ile her eşleşme üzerinde işlem yapmak ve locate'in hızlı…
Bölüm 4: Kullanıcılar ve gruplar
- 4.1 Kullanıcılar ve gruplarla çalışmak — Linux'ta neden çok sayıda kullanıcı olduğu (çoğu insan değil), UID ve GID, /etc/passwd ve /etc/group dosyalarındaki her alanın anlamı,…
- 4.2 Dosya ve dizin izinleri — -rwxr-x--- okumak: sahip, grup ve diğerleri; okuma/yazma/çalıştırma ve bunların dizinler için anlamı; chmod ile sembolik (u+x) ve sayısal…
- 4.3 Kullanıcı değiştirmek: su ve sudo — Neden sıradan bir kullanıcı olarak çalışıldığı, sudo'nun tek bir komutu nasıl root olarak çalıştırdığı (ve kaydettiği), sudo -l, -u ve -i,…
- 4.4 Parola değiştirmek — Linux'un parolaları nasıl sakladığı (/etc/shadow'da parolaların kendisi değil, özetler ve tuz), passwd ile kendi parolanı ve başka bir…
Bölüm 5: Yazılım kurmak
- 5.1 Linux'ta paket yönetimi — Yazılımın bir Linux makinesine nasıl geldiği: paketler, depolar, bağımlılıklar, imzalar ve bunları bir araya getiren paket yöneticisi;…
- 5.2 Debian ve Ubuntu'da paket yönetimi: apt — Günlük apt döngüsü: paket dizinini güncellemek, yükseltmeleri görmek ve uygulamak, aramak, bağımlılıklarıyla kurmak, yeni programı…
- 5.3 Red Hat sistemlerinde paket yönetimi: dnf — Aynı fikirler Rocky Linux'ta (Red Hat Enterprise Linux kopyası): apt yerine dnf, dpkg yerine rpm, .rpm paketleri, /etc/yum.repos.d…
- 5.4 Yazılımı elle kurmak — Bir program hiçbir depoda yoksa: indirmenin sağlama toplamını doğrulamak, bir sürüm arşivini /opt'a açmak, PATH'te olması için…
Bölüm 6: Kabuk
- 6.1 Yaygın komut satırı kabukları — sh, bash, dash, zsh ve fish: nereden geldikleri ve nasıl farklılaştıkları; oturum kabuğu ve etkileşimli kabuk; hangi kabuğu kullandığın,…
- 6.2 Ortam değişkenleri — Kabuk değişkenleri ve ortam değişkenleri: atamak, okumak, dışa aktarmak ve silmek; önemli olanlar ($HOME, $USER, $PATH, $PWD, $LANG);…
- 6.3 Kabuk başlangıç dosyaları — bash'in başlarken hangi dosyaları okuduğu (/etc/profile, ~/.profile, ~/.bashrc), her birine ne konacağı, takma adlar, değişiklikleri…
- 6.4 Girdi ve çıktıyı yönlendirmek — Üç standart akış ve numaraları; çıktıyı > ve >> ile dosyaya yazmak, girdiyi < ile okumak, hataları 2> ile ayırmak, 2>&1 ile birleştirmek,…
- 6.5 Borular — | işleci: bir komutun stdout'unu sonrakinin stdin'ine bağlamak, küçük araçlarla çalışan Unix felsefesi, süzgeçler, bir web sunucusu…
- 6.6 Komut geçmişi — bash'in komutları nasıl hatırladığı, ~/.bash_history dosyası, komutları !!, !N, !metin ve !$ ile yeniden kullanmak, Ctrl+R ile aramak,…
- 6.7 Komut ikamesi — $(komut): bir komutun çıktısını başka bir komutun ya da bir değişkenin içine koymak; sonucu tırnaklamak; eski ters tırnak biçimi; $(( ))…
Bölüm 7: Yardımcı araçlar
- 7.1 grep ile metin aramak — grep'i derinlemesine öğrenmek: dosyalarda ve günlüklerde bir kalıbı aramak, saymak (-c), satır numaraları (-n), büyük/küçük harfi yok…
- 7.2 Metni dönüştürmek: cut, tr, sed ve awk — Bir sunucu envanteri üzerinde dört klasik süzgeç: cut sütun keser, tr karakterleri çevirir ya da siler, sed satırları yer değiştirmelerle…
- 7.3 Komut satırından ağ — Bir Linux makinesinin temel ağ bilgileri ve onları gösteren komutlar: IP adresi ve ağ arayüzü (ip a, hostname -I), varsayılan ağ geçidi…
- 7.4 Dosya aktarmak: wget, curl, scp ve rsync — wget ve curl ile web'den indirmek ve indirmeyi doğrulamak; SSH ile başka bir makineye girmek (makine anahtarları, known_hosts, parolalar);…
- 7.5 Metin dosyalarını dönüştürmek: satır sonları ve kodlamalar — Windows'tan gelen metin dosyaları Linux'ta neden sorun çıkarır: CRLF ve LF satır sonları, görünmeyen karakterleri cat -A ve file ile…
Bölüm 8: Metin düzenleyiciler
- 8.1 nano ile dosya düzenlemek — Neden bir terminal metin düzenleyicisine ihtiyaç duyulduğu, nano ekranının bölümleri, dosya oluşturup kaydetmek (^O), çıkmak (^X), satır…
- 8.2 Vim temelleri: kipler, kaydetmek ve çıkmak — vi ve Vim'in ne olduğu ve neden her sunucuda bulunduğu, kip (mode) fikri (normal, ekleme, komut satırı), i ve Esc ile metin yazmak, :w,…
- 8.3 Vim'de verimli çalışmak — Vim'in işleç ve hareket dilbilgisi, sayılar (3dd, 5j), atlamak (gg, G, :N, satır numaraları), / ve n ile aramak, satır kopyalayıp…
Bölüm 9: Süreç yönetimi
- 9.1 Süreçler ve ps — Sürecin ne olduğu ve programdan farkı, süreç kimlikleri (PID) ve üst süreçler (PPID), PID 1 (systemd), süreçleri ps, ps aux ve ps -ef ile…
- 9.2 Sistemi izlemek: top, uptime ve free — Yük ortalaması ve işlemci sayısına göre ne anlama geldiği, boş bellek ile kullanılabilir belleğin farkı ve top: özet satırları, süreç…
- 9.3 Sinyaller: kill, killall ve pkill — Sinyalin ne olduğu, önemlileri (SIGTERM, SIGKILL, SIGINT, SIGHUP, SIGSTOP, SIGCONT) ve numaraları, bir süreci kill ile kibarca ve kill -9…
- 9.4 Ön plan ve arka plan işleri — Ön plan ve arka plan, & ile bir iş başlatmak, işleri listelemek, ön plandaki programı Ctrl+C ile durdurmak, Ctrl+Z ile duraklatmak, bg ile…
- 9.5 systemd ve journalctl ile hizmetler — Hizmetin ne olduğu ve systemd'nin onu nasıl yönettiği: birimler (unit) ve birim dosyaları, systemctl status ve nasıl okunacağı, başlatmak,…
- 9.6 cron ile görev zamanlamak — cron hizmet programı ve crontab dosyaları; *, liste, aralık ve adımlarla beş zaman alanı (dakika, saat, ayın günü, ay, haftanın günü),…
English