Pardus'ta Modüler Yapılandırma Sanatı: .d Dizinleri

Linux sistem yönetiminde en sık karşılaşılan ve sistemin düzenli çalışmasını sağlayan en kritik yapılardan biri /etc/ altındaki .d (directory) takılı dizinlerdir. Bu makale, modüler yapılandırma mantığını ve bu dizinlerin nasıl yönetilmesi gerektiğini detaylandırmaktadır.



1. /etc/*.d/ Mantığı Nedir?

Geleneksel Linux sistemlerinde yapılandırma ayarları genellikle tek bir dosya içinde (örneğin /etc/sudoers veya /etc/apt/sources.list) tutulurdu. Ancak sistem karmaşıklaştıkça ve yüklü yazılım sayısı arttıkça, bu devasa dosyaları yönetmek zorlaştı.

İşte bu noktada modüler yapılandırma devreye girer. Bir ana yapılandırma dosyasını doğrudan düzenlemek yerine, ayarların küçük parçalar halinde özel bir dizin altında saklanmasına izin verilir. Bu dizinlerin sonundaki .d, "directory" (dizin) kelimesini temsil eder.

Temel Avantajları:

  • Paket Yönetimi: Bir yazılım güncellendiğinde, ana yapılandırma dosyasının üzerine yazılması (overwriting) riskini ortadan kaldırır. Yazılım kendi ayarlarını .d dizini içine bırakır.

  • Otomasyon: Ansible, Puppet veya Bash scriptleri gibi araçlarla tek bir satırı değiştirmek yerine, yeni bir dosya ekleyip silmek çok daha güvenli ve kolaydır.

  • Hata Ayıklama: Bir ayar sistemde sorun çıkarıyorsa, ilgili dosyayı dizinden taşımak veya silmek tüm sistemi etkilemeden sorunu izole etmeyi sağlar.

🧩 Neden *.d Dizinleri Var?

🎯 Temel Amaç: Modülerlik

Eskiden:

/etc/sudoers /etc/ssh/sshd_config

Şimdi:

/etc/sudoers.d/ /etc/ssh/sshd_config.d/ /etc/sysctl.d/

Bunun sebebi:

ProblemÇözüm
Tek dosyada karmaşaKüçük dosyalara bölme
Paket güncellemesinde çakışmaPaketler kendi .d dosyasını ekler
Merkezi yönetim zorPolitika dosyası ekle-çıkar
Geri dönüş zorDosyayı sil, bitti

👉 .d = “drop-in configuration”
Yani: “Bu dizine bırakırsan sistem okur”


2. Yaygın Kullanılan *.d Dizinleri

Sistemde en sık karşılaşacağınız modüler dizin yapıları şunlardır:

Dizin YoluKullanım Amacı
/etc/apt/sources.list.d/Ekstra yazılım depolarını (repository) eklemek için kullanılır.
/etc/sudoers.d/Kullanıcılara sudo yetkisi veren dosyaları barındırır.
/etc/sysctl.d/Kernel parametrelerini (çekirdek ayarları) düzenlemek için kullanılır.
/etc/profile.d/Tüm kullanıcılar için geçerli olacak ortam değişkenlerini (PATH vb.) tutar.
/etc/cron.d/Zamanlanmış görevlerin (cron jobs) tanımlandığı dizindir.
/etc/systemd/system/*.d/Systemd servislerini ana dosyasını bozmadan modifiye etmek için kullanılır (Drop-in files).

3. Çalışma Mantığı: Dosya Sıralaması

Linux servisleri bu dizinlerin içindeki dosyaları genellikle alfabetik sırayla okur. Bu nedenle dosya isimlerinin başında genellikle rakamlar kullanılır.

  • 00-99 Arası Numaralandırma: Dosyaların hangi öncelikle işleneceğini belirler.

    • 01_custom_proxy.conf → Önce okunur.

    • 99_final_settings.conf → En son okunur ve önceki dosyalardaki aynı ayarları ezebilir (override).

Önemli Not: Genellikle bu dizinlerdeki dosyaların .conf uzantısına sahip olması istenir. Bazı servisler uzantısı olmayan veya farklı uzantılı dosyaları güvenlik gereği görmezden gelir.


4. Uygulamalı Örnek: sudoers.d Kullanımı

Diyelim ki bir kullanıcıya şifresiz sudo yetkisi vermek istiyorsunuz. /etc/sudoers dosyasını visudo ile açıp bozma riskine girmek yerine şu adımları izlersiniz:

  1. /etc/sudoers.d/ altında bir dosya oluşturun:

    sudo nano /etc/sudoers.d/kullanici_izni

  2. İçine şu satırı yazın:

    kullanici_adi ALL=(ALL) NOPASSWD:ALL

  3. Dosyanın izinlerini güvenli hale getirin (Zorunludur, aksi halde sistem dosyayı reddeder):

    sudo chmod 0440 /etc/sudoers.d/kullanici_izni

Artık ana dosyaya dokunmadan bu kullanıcıya yetki vermiş oldunuz. Yetkiyi geri almak için dosyayı silmeniz yeterlidir.


5. Sistem Yöneticileri İçin İpuçları

  • Include Komutu: Eğer kendi uygulamanız için bir .d yapısı kurmak istiyorsanız, ana yapılandırma dosyanızın içine include /etc/uygulama/conf.d/*.conf gibi bir satır eklemeniz gerekir.

  • İzinler (Permissions): /etc/*.d/ içindeki dosyaların genellikle root:root sahipliğinde ve 644 (bazı durumlarda 440) izinlerinde olması gerekir.

  • Temiz Tutun: Deneme yapmak için oluşturduğunuz yedek dosyaları (örneğin ayar.conf.bak) bu dizinlerde bırakmayın. Servisler .bak dosyasını da yapılandırma olarak okumaya çalışıp hata verebilir.

Yaygın Kullanılan /etc/*.d/ Dizinleri

🔐 /etc/sudoers.d/

Kullanıcı ve grup bazlı sudo yetkileri

etapadmin ALL=(ALL) NOPASSWD:/usr/bin/reboot

📌 Ana /etc/sudoers dosyası değiştirilmez
📌 Kurum politikaları .d içine yazılır


🖥️ /etc/sysctl.d/

Kernel (çekirdek) parametreleri

kernel.dmesg_restrict = 1 fs.protected_symlinks = 1

📌 Güvenlik sertleştirme (hardening) için kritik
📌 /etc/sysctl.conf yerine parçalı yapı


🌐 /etc/ssh/sshd_config.d/

SSH sunucu ayarları

PasswordAuthentication no PermitRootLogin no

📌 Okul / kurum ortamlarında uzaktan erişim politikası
📌 Güncellemede bozulmaz


🧠 /etc/systemd/system/*.d/

systemd servis override dizinleri

/etc/systemd/system/lightdm.service.d/override.conf
[Service] Restart=always

📌 Servisin orijinal dosyasına dokunulmaz
📌 Sınav modu / kiosk senaryoları için ideal


🧰 /etc/modprobe.d/

Kernel modül ayarları

blacklist usb_storage

📌 USB bellek engelleme
📌 Akıllı tahta / sınav ortamı için çok önemli


📜 /etc/logrotate.d/

Log dosyası döndürme kuralları

/var/log/secure { weekly rotate 4 }

📌 Disk dolmasını önler
📌 Merkezi log disiplini sağlar


🧑‍💻 /etc/profile.d/

Shell ortam değişkenleri (tüm kullanıcılar)

export HISTSIZE=500

📌 Öğrenci / öğretmen profilleri
📌 Ortam değişkenleri merkezi tanım


Yükleme Sırası ve Öncelik Mantığı

Çoğu .d dizini alfabetik sırayla okunur:

00-default.conf 50-school-policy.conf 99-custom.conf

📌 Son okunan kazanır
📌 Bu sayede politika hiyerarşisi kurulur


🔐 5. Güvenlik Açısından .d Yapısı

Avantajlar:

  • Yetki sınırlandırması

  • Dosya bazlı denetim

  • Sil → geri dön

  • Merkezi yönetim uyumu (Ansible / LeaderAhenk)

Riskler:

  • Yanlış izinler (chmod)

  • Kötü niyetli dosya eklenmesi

  • Fazla override

📌 Yetkisiz kullanıcılar .d dizinlerine yazamamalı


Okul ve Kurumsal Kullanım Senaryosu

🎓 Sınav Modu İçin Örnek Yapı

DizinAmaç
/etc/sudoers.d/Öğrenci yetkilerini kısıtlama
/etc/modprobe.d/USB engelleme
/etc/systemd/system/*.d/Panel / masaüstü kilidi
/etc/sysctl.d/Kernel güvenliği
/etc/profile.d/Ortam sabitleme

📌 Hepsi tek tek geri alınabilir
📌 Ana sistem dosyaları hiç bozulmaz


🧠 7. Neden Modern Linux .d Yapısını Zorunlu Hale Getirdi?

Çünkü:

  • 🔄 Güncellemeler güvenli

  • 🧩 Konfigürasyonlar modüler

  • 🧑‍🏫 Eğitim ortamlarında geri dönüş kolay

  • 🧰 Otomasyon sistemleriyle uyumlu

Modern Linux = monolitik dosya değil, modüler politika


📌 8. Özet

  • /etc/*.d/ dizinleri modern Linux’un bel kemiğidir

  • Sistem güvenliği ve yönetilebilirlik burada başlar

  • Okul, kamu ve kurumsal yapılarda olmazsa olmazdır

  • Pardus ETAP 23 gibi dağıtımlarda bilinmesi şarttır



6. Neden Modern Linux .d Yapısını Zorunlu Hale Getirdi?

Çünkü:

  • 🔄 Güncellemeler güvenli

  • 🧩 Konfigürasyonlar modüler

  • 🧑‍🏫 Eğitim ortamlarında geri dönüş kolay

  • 🧰 Otomasyon sistemleriyle uyumlu

Modern Linux = monolitik dosya değil, modüler politika 


7. Özet

  • /etc/*.d/ dizinleri modern Linux’un bel kemiğidir

  • Sistem güvenliği ve yönetilebilirlik burada başlar

  • Pardus gibi dağıtımlarda bilinmesi şarttır

Yorumlar

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Başlangıç Onarma