Ders Notları

100% Complete (success)
Dikkat !!! Lütfen okuyunuz ...

Öğretim Üyesi (Üyeleri): Öğr. Gör. Emre Engin *

(*) Ders notu girebilmek için, bu alanda kendi isminiz yazıyor olmalı...

  • Bologna verilerinin girilmesi;
    ubys.omu.edu.tr adresinden,
    ÜBYS' de Öğretim Elemanları yetkisi seçilmeli... Öğretim elemanı danışmanlık işlemlerinden yapabilirsiniz...
Yıl: 2025, Dönem: Güz
Ders Kitabı / Malzemesi / Önerilen Kaynaklar

Dersin İçeriği

Ders kapsamında; açık kaynak lisansları, dosya/dizin ve kullanıcı yönetimi, metin işleme ve pipeline tasarımı, paket ve servis yönetimi, ağ yapılandırması ve uzak otomasyon, Bash betikleme, sistem sertleştirme, sanallaştırma/konteyner teknolojileri, sürümleme ve dokümantasyon ele alınacaktır. Dönemin ikinci yarısında proje tabanlı çalışmalar ile kapsamlı uygulama, entegrasyon, RCA/rollback, performans ve güvenlik testleri yapılacaktır.

Dersin Amacı

Bu dersin amacı, öğrencilere açık kaynak işletim sistemleri ekosistemini tanıtmak, temel komut satırı araçlarını öğretmek, sistem yönetimi ve güvenlik sertleştirme becerilerini kazandırmak, ayrıca sanallaştırma, konteyner, sürümleme ve proje tabanlı uygulamalar ile gerçek hayata uygun yetkinlikler geliştirmektir.

Haftalık Ders İçeriği

Hafta Teorik Uygulama Laboratuar Ders Notları
1 Açık kaynak ekosistemi, GPL/LGPL/MIT/Apache/BSD lisanslarının karşılaştırması; lisans seçimi için karar ağacı; Pardus’un (Debian tabanlı) mimarisi. Proje deposu başlatma; README iskeleti oluşturma; uygun LICENSE dosyası ekleme. Sanal makinede Pardus XFCE kurulumu; yerelleştirme; temel terminal kullanımı; man ve info kılavuzları.
2 FHS (Filesystem Hierarchy Standard); rwx izinleri, umask kavramı; ACL (Access Control List) mantığı; sudoers dosyasının ilkeleri. “Kullanıcı açılış kiti” betiği hazırlanması (dizin/izin/quotas iskeleti). Kullanıcı ve grup senaryoları; ACL ile yetki devri; hatalı yetkilerin teşhisi.
3 grep, sed, awk, cut, sort, uniq, head/tail komutları; find + xargs kullanımı; yönlendirme (redirection) ve borulama (pipelining) mantığı. “Log özetleyici” betiği geliştirme (eşik aşımlarında uyarı verecek şekilde). Log dosyalarından özet ve istatistik çıkaran tek satırlık komutlar yazma; performans ve doğruluk testleri.
4 Depolar ve anahtar yönetimi; APT yaşam döngüsü; systemd unit türleri; journalctl ve logrotate ile günlük yönetimi. “Servis sağlığı” betiği geliştirme (hata durumunda yeniden başlatma ve olayı loglama). Servis kurulum, enable/start işlemleri; özel unit yazarak betiği servisleştirme; günlüklerin doğruluğunu test etme.
5 IP ve DNS kavramları; yönlendirme; ip, nmcli komutları; anahtarlı SSH oturumu; scp ve rsync ile dosya aktarımı; temel tünelleme yöntemleri. “İlk kurulum (ağ + SSH)” betiği geliştirme (bağlantı testleri dâhil). Statik ve DHCP yapılandırması; ssh-copy-id ile anahtar tabanlı kimlik doğrulama; çoklu sunuculara komut dağıtımı.
6 Koşullar, döngüler, fonksiyonlar; parametre/argüman sözleşmesi; set -euo pipefail, trap kullanımı; cron ve systemd timers karşılaştırması; ortam değişkenleri (PATH, export, noclobber, ignoreeof). “Bakım otomasyonu” betiği geliştirme (idempotent, loglu çalışacak şekilde). Artımlı yedekleme (rsync) ve geri yükleme provası; cron veya systemd timer ile periyodik çalışma senaryoları.
7 Sistem güncelleme politikası; saldırı yüzeyini azaltma yöntemleri; UFW ve nftables temelleri; Fail2ban çalışma mantığı; AppArmor’un kavramsal yapısı. “Sertlestir.sh” betiği geliştirme (dry-run → apply; rollback adımı dâhil). Minimal sertleştirme checklist’i hazırlanması; SSH sertleştirme adımları; Fail2ban jail yapılandırması.
8 VirtualBox/KVM yaşam döngüsü ve imajlar; Docker/Podman temel kavramları; tekrar üretilebilir çevre tasarımı; Git iş akışı ve kod inceleme (peer review) süreçleri. “Tek komutta lab” betiği geliştirme (VM/konteyner kur, servis ayağa kaldır, timer ekle) + repo’ya LICENSE/CONTRIBUTING/README dosyalarını ekleme. Aynı hizmeti iki farklı şekilde çalıştırma: (A) sanal makine üzerinde, (B) konteyner ile; çıktıları belgeleme.
10 Proje seçimi; kapsam ve kabul kriterleri; risklerin belirlenmesi; repo yapısı ve iş akışı tasarımı. PROJE.md kartı hazırlama: amaç, kabul testleri (Given/When/Then). Repo iskeleti kurma ve görev listesi (WBS/backlog) oluşturma. Repo iskeleti oluşturma: README.md, LICENSE, CONTRIBUTING.md, CHANGELOG.md, scripts/, tests/, configs/ klasörleri. Git akışı: branch stratejisi ve kod inceleme (PR) kuralları.
11 Modüler betik mimarisi; yapılandırma ile iş mantığının ayrımı; log formatı tasarımı; hataya dayanıklılık ilkeleri. Akış diyagramı (DESIGN.md) hazırlama; çalışan PoC + örnek log üretme. Betik kütüphanesi geliştirme: set -euo pipefail, trap ile temizlik, fonksiyonlar, getopts, .env/configs/.conf. PoC uygulamaları: A hattı: “bakım-apt.sh” B hattı: “sertlestir.sh (dry-run)” C hattı: “deploy.sh” (yalın servis). systemd unit şablonu ve ilk timer taslağı.
12 Çoklu ana bilgisayar/rol senaryoları; idempotent işlemler; ağ yapılandırması ve SSH üzerinden otomasyon. Entegrasyon betikleri geliştirme; envanter dosyası ile dağıtım; kısa demo kaydı veya gif hazırlama. Envanter dosyası (ör. hosts.txt); anahtar tabanlı SSH erişimi; scp/rsync ile dağıtım. Senaryo A: “toplu güncelleme + sağlık raporu” Senaryo B: “sertleştirme + fail2ban jail dağıtımı” Senaryo C: VM (VBoxManage/virsh) ayağa kaldırma + Docker/Podman ile eşdeğer kurulum.
13 İzleme ve günlükleme yöntemleri; kök neden analizi (RCA) kavramı; geri alma (rollback) stratejileri ve yapılandırma yönetimi. RCA.md raporu hazırlama; otomatik onarım ve rollback betiği geliştirme; log örneklerinin teslim edilmesi. journalctl ve /var/log analizleri; eşik ve uyarı mekanizmaları; logrotate kurgusu. Hata senaryosu üretme: servis veya kuralların bozulması → RCA raporu → düzeltici eylem betiği. Rollback: yapılandırma snapshot/backup → geri yükleme provası.
14 Doğruluk, performans ve güvenlik sertleştirmesi doğrulama yöntemleri; negatif testler ve failure injection kavramı; zamanlayıcı doğrulama; statik analiz araçları ve temel güvenlik taramaları. TESTS.md belgesi hazırlama; otomatik test betikleri (tests/.sh) geliştirme; metrik özet raporu çıkarma. Negatif testler, hatalı argüman/failure injection; zamanlayıcı doğrulama. İsteğe bağlı: shellcheck, shfmt ile statik analiz; konteyner imajı için temel güvenlik taraması. Kıyas/ölçüm: iş süresi, log hacmi, başarısızlık oranı.
15 Yayınlanabilir sürüm hazırlama; sürüm etiketleme ve CHANGELOG oluşturma; devralma dokümanları (RUNBOOK, OPERATIONS) tasarımı; sunum ve canlı demo prensipleri. Son sürüm repo’nun hazırlanması; tüm dokümantasyonun tamamlanması; demo kaydı veya slayt sunumunun teslimi. Sürüm etiketleme: v1.0.0 + CHANGELOG. RUNBOOK.md (kurulum/çalıştırma/onarım) ve OPERATIONS.md (günlük iş akışı) belgelerinin hazırlanması. 6–8 dakikalık canlı demo + Q&A oturumu; peer-review tutanaklarının oluşturulması.