Linux Temelleri – Bölüm 2: Dizin Hiyerarşisini Anlamak
Linux işletim sisteminin kalbinde, her şeyin düzenli ve mantıklı bir şekilde organize edildiği güçlü bir dosya sistemi yatar. Bu sistemin temelini oluşturan dizin hiyerarşisini anlamak, bir Linux kullanıcısı veya yöneticisi olmak için atılacak en önemli adımlardan biridir. Dosyaların nerede bulunduğunu, sistemin nasıl çalıştığını ve sorunları nasıl gidereceğinizi bilmek, Linux deneyiminizi kökten değiştirecektir. Bu makalede, Linux’un dizin yapısının derinliklerine inecek, her bir ana dizinin amacını keşfedecek ve bu hiyerarşide nasıl gezineceğinizi öğreneceksiniz.
Linux Dizin Hiyerarşisine Giriş ve FHS
Linux işletim sistemi, Windows’taki C:\ sürücüsü gibi tek bir ana sürücü mantığı yerine, her şeyin tek bir kök dizin (/) altında toplandığı bir hiyerarşik yapı kullanır. Bu yapı, işletim sisteminin kararlılığını, güvenliğini ve esnekliğini sağlayan temel bir mimari prensiptir. Her dosya ve dizin, bu kök dizinden dallanarak belirli bir amaca hizmet eden alt dizinlerde bulunur.
Linux Dosya Sistemi Kavramı
Linux’ta “dosya sistemi” terimi, hem dosyaların disk üzerinde nasıl düzenlendiğini hem de bu düzenlemenin kullanıcıya nasıl sunulduğunu ifade eder. Her şey bir dosyadır felsefesiyle, donanım aygıtlarından ağ soketlerine kadar her şey dosya olarak temsil edilir. Bu birleşik yaklaşım, sistem yönetimini ve programlamayı basitleştirir, çünkü tüm kaynaklara standart dosya işlemleriyle erişilebilir.
Kök Dizin (/) ve Her Şeyin Başlangıcı
Linux dosya hiyerarşisinin en tepesinde, her şeyin başlangıcı olan kök dizin (/) bulunur. Tüm diğer dizinler ve dosyalar, doğrudan veya dolaylı olarak bu kök dizinin altında yer alır. Bir Windows sistemindeki “Bilgisayarım” veya “Bu Bilgisayar”ın tüm sürücüleri listelemesi gibi, Linux’ta da kök dizin, tüm bağlama noktalarını ve sistemin tüm içeriğini barındırır.
Filesystem Hierarchy Standard (FHS) ve Önemi
Linux dağıtımları arasındaki tutarlılığı sağlamak ve yazılım geliştiricilerin işini kolaylaştırmak amacıyla Filesystem Hierarchy Standard (FHS) geliştirilmiştir. FHS, belirli dizinlerin belirli türdeki dosyaları içermesi gerektiğini tanımlayan bir standarttır. Bu sayede, farklı Linux dağıtımlarında (Ubuntu, Fedora, Debian vb.) bile temel sistem dizinlerinin amaçları aynı kalır. FHS’ye uyum, sistem yöneticilerinin farklı sistemler arasında kolayca geçiş yapabilmesini ve yazılımların beklendiği gibi çalışmasını garanti eder.
Aşağıdaki tablo, FHS’nin tanımladığı bazı önemli dizinleri ve amaçlarını özetlemektedir:
| Dizin | Amaç | Örnek İçerik |
|---|---|---|
/ |
Tüm dosya sisteminin kökü. | Diğer tüm dizinler |
/bin |
Temel kullanıcı komutları. | ls, cp, mv |
/sbin |
Sistem yönetimi için temel komutlar. | fdisk, shutdown, reboot |
/etc |
Sistem genelinde yapılandırma dosyaları. | passwd, fstab, network ayarları |
/home |
Kullanıcıların kişisel ev dizinleri. | /home/kullaniciadi/belgeler |
/usr |
Kullanıcı programları ve verileri (salt okunur). | /usr/bin, /usr/lib, /usr/share |
/var |
Değişken veriler (loglar, spool dosyaları, veritabanları). | /var/log, /var/cache |
/tmp |
Geçici dosyalar. Sistem yeniden başlatıldığında genellikle silinir. | Uygulama geçici dosyaları |
/dev |
Cihaz dosyaları. | /dev/sda, /dev/null |
/proc |
Çalışan süreçler hakkında bilgi içeren sanal dosya sistemi. | /proc/cpuinfo, /proc/meminfo |
/sys |
Çekirdek ve donanım hakkında bilgi içeren sanal dosya sistemi. | Donanım ayarları |
/opt |
İsteğe bağlı (üçüncü taraf) yazılım paketleri. | Google Chrome, VS Code kurulumları |
/boot |
Önyükleme dosyaları (çekirdek, initramfs). | GRUB yapılandırması |
/mnt |
Geçici olarak bağlanan dosya sistemleri için bağlama noktası. | Manuel disk bağlamaları |
/media |
Çıkarılabilir medya (CD-ROM, USB) için bağlama noktası. | USB bellekler, harici diskler |
/run |
Çalışma zamanı verileri. | Sistem süreçlerinin PID dosyaları |
Temel Sistem Dizinleri: Yönetim ve İşletim
Linux sisteminin düzgün çalışması için hayati öneme sahip olan bu dizinler, genellikle sistem yöneticileri tarafından yönetilen ve kullanıcıların doğrudan müdahale etmemesi gereken alanlardır.
Yürütülebilir Komutlar ve Sistem İkilileri: /bin, /sbin
/bin dizini, sistemin çalışması için gerekli olan temel kullanıcı komutlarını içerir. Bu komutlar, sistemin tek kullanıcı modunda bile çalışabilmesini sağlar (örneğin, ls, cp, mv, cat). /sbin dizini ise, sistem yönetimi için gerekli olan ve genellikle root yetkisi gerektiren komutları barındırır (örneğin, fdisk, ifconfig, shutdown). Bu ayrım, güvenlik ve sistem bütünlüğü açısından önemlidir.
Sistem Ayarları ve Kütüphaneler: /etc, /lib, /boot
/etc dizini, tüm sistem genelindeki yapılandırma dosyalarını içerir. Ağ ayarlarından kullanıcı şifrelerine, başlatma betiklerinden servis tanımlarına kadar her şey burada bulunur. Bu dizin, bir sistemin “kimliği” gibidir. /lib dizini, /bin ve /sbin dizinlerindeki programlar ve çekirdek modülleri tarafından kullanılan paylaşımlı kütüphaneleri barındırır. /boot dizini ise, sistemin başlatılması için gerekli olan önyükleme yükleyicisi (GRUB), Linux çekirdeği ve initramfs gibi dosyaları içerir.
Sanal Dizinler ve Donanım Arayüzleri: /dev, /proc, /sys
/dev dizini, sistemdeki tüm donanım aygıtlarını temsil eden özel dosyaları içerir (örneğin, /dev/sda sabit diski, /dev/null “kara delik” aygıtı). Bu dosyalar, donanımla etkileşim kurmak için bir arayüz sağlar. /proc ve /sys dizinleri ise fiziksel olarak diskte bulunmayan, çekirdek tarafından oluşturulan sanal dosya sistemleridir. /proc, çalışan süreçler ve sistem kaynakları hakkında gerçek zamanlı bilgi sunarken, /sys, çekirdek modülleri ve donanım hakkında daha düşük seviyeli yapılandırma ve bilgi sağlar.
Kullanıcı, Uygulama ve Değişken Veri Dizinleri
Bu dizinler, kullanıcıların kişisel verilerini, kurulu uygulamaları ve sistemin çalışma zamanında ürettiği değişken verileri barındırır.
Kullanıcı Ev Dizinleri: /home
Her normal kullanıcının kendi kişisel dizini /home altında bulunur (örneğin, /home/kullaniciadi). Bu dizin, kullanıcının belgelerini, indirmelerini, masaüstü dosyalarını, yapılandırma dosyalarını (nokta dosyaları olarak bilinen gizli dosyalar) ve diğer kişisel verilerini içerir. Bu sayede, sistemin diğer bölümlerinden izole edilmiş, kişiselleştirilmiş bir çalışma alanı sunulur.
Uygulama Yüklemeleri ve Paylaşılan Veriler: /usr, /opt
/usr dizini, “Unix System Resources” (Unix Sistem Kaynakları) anlamına gelir ve çoğu kullanıcı programını ve uygulamasını barındırır. Genellikle salt okunur olarak kabul edilir ve /usr/bin (kullanıcı programları), /usr/lib (kütüphaneler) ve /usr/share (belgeler ve paylaşılan veriler) gibi alt dizinlere sahiptir. /opt dizini ise, sistemde kurulu olan isteğe bağlı veya üçüncü taraf yazılım paketleri için kullanılır. Örneğin, bir web tarayıcısı veya özel bir geliştirme ortamı buraya yüklenebilir.
Değişken Veri ve Loglar: /var
/var dizini, sistemin çalışması sırasında sürekli olarak değişen verileri (variable data) içerir. Bu dizin, sistem log dosyalarını (/var/log), paket yöneticisi önbelleklerini (/var/cache), e-posta kuyruklarını (/var/spool), web sunucusu dosyalarını (/var/www) ve veritabanlarını (/var/lib) barındırır. Disk alanı doluluğu veya performans sorunları genellikle /var dizinindeki aşırı büyüyen dosyalardan kaynaklanır.
Geçici ve Harici Depolama Dizinleri
Bu dizinler, geçici dosyaların saklanması ve harici depolama birimlerinin sisteme entegre edilmesi için kullanılır.
Geçici Dosyalar ve Çalışma Zamanı Verileri: /tmp, /run
/tmp dizini, uygulamalar ve kullanıcılar tarafından oluşturulan geçici dosyaları barındırır. Bu dizindeki içerikler genellikle sistem yeniden başlatıldığında veya belirli aralıklarla otomatik olarak silinir. Bu nedenle, önemli verilerinizi burada saklamaktan kaçınmalısınız. /run dizini ise, sistemin çalışma zamanında oluşturulan geçici dosyaları ve süreç kimlik dosyalarını (PID dosyaları) içerir. /run dizini, sistem başlatıldığında temizlenir ve sistemin çalışma durumunu yansıtır.
Harici Cihaz Bağlantı Noktaları: /mnt, /media
/mnt dizini, “mount” (bağlama) kelimesinden gelir ve genellikle sistem yöneticileri tarafından geçici olarak bağlanan dosya sistemleri (örneğin, ağ paylaşımları, ek sabit diskler) için bir bağlama noktası olarak kullanılır. /media dizini ise, çıkarılabilir medya (USB bellekler, CD/DVD’ler, harici sabit diskler) için otomatik bağlama noktaları olarak kullanılır. Bir USB belleği taktığınızda, genellikle /media/kullaniciadi/USB_adi gibi bir yolda görünür.
Dizin Yapısının Güvenlik ve Performans Etkileri
Linux’un dizin hiyerarşisi, güvenlik ve performans açısından kritik rol oynar. Her dizinin belirli bir amacı olması, izinlerin daha kolay yönetilmesini sağlar. Örneğin, /etc dizinindeki yapılandırma dosyalarına yalnızca root kullanıcısının yazma izni olması, sistemin yetkisiz değişikliklere karşı korunmasına yardımcı olur. Ayrıca, farklı dizinlerin farklı disk bölümlerine ayrılması, bir bölümün dolmasının diğer bölümleri etkilemesini önleyerek sistem kararlılığını artırır ve I/O performansını optimize edebilir.
Dizinlerde Gezinme ve Yönetim: Temel Komutlar
Linux dizin hiyerarşisinde etkili bir şekilde çalışmak için bazı temel komutları bilmek şarttır.
Mevcut Dizin ve Dizin Değiştirme: pwd, cd
pwd (print working directory) komutu, o anda bulunduğunuz dizinin tam yolunu gösterir. Örneğin, /home/kullaniciadi/belgeler. cd (change directory) komutu ise dizinler arasında geçiş yapmanızı sağlar.
pwd
# Çıktı: /home/kullaniciadi
cd /var/log
pwd
# Çıktı: /var/log
cd ..
pwd
# Çıktı: /var
cd ~
pwd
# Çıktı: /home/kullaniciadi (Ev dizinine döner)
Dizin İçeriğini Listeleme: ls
ls komutu, bir dizinin içeriğini listelemek için kullanılır. Çeşitli seçeneklerle (flags) birlikte kullanılarak daha detaylı bilgiler elde edilebilir.
ls
# Mevcut dizindeki dosya ve dizinleri listeler
ls -l
# Detaylı liste görünümü (izinler, sahip, boyut, tarih)
ls -a
# Gizli dosyalar da dahil olmak üzere tüm dosyaları listeler
Dizin Oluşturma, Silme, Kopyalama ve Taşıma: mkdir, rmdir, cp, mv
mkdir (make directory) yeni bir dizin oluşturur. rmdir (remove directory) boş bir dizini siler. Dolu bir dizini silmek için rm -r kullanılır (dikkatli olun!). cp (copy) dosya ve dizinleri kopyalar. mv (move) ise dosya ve dizinleri taşır veya yeniden adlandırır.
mkdir yeni_dizin
# "yeni_dizin" adında bir dizin oluşturur
rmdir yeni_dizin
# Boş "yeni_dizin"i siler
cp dosya.txt yeni_dizin/
# dosya.txt'yi yeni_dizin'e kopyalar
mv eski_ad.txt yeni_ad.txt
# dosyanın adını değiştirir
mv dosya.txt baska_dizin/
# dosya.txt'yi baska_dizin'e taşır
Dizin İzinleri ve Sahiplik: chmod, chown (Kısa değinme)
Linux'ta her dosya ve dizinin belirli izinleri ve bir sahibi vardır. chmod (change mode) komutu dosya ve dizin izinlerini değiştirirken, chown (change owner) komutu dosya veya dizinin sahibini ve grubunu değiştirir. Bu komutlar, sistem güvenliğinin temel taşlarından biridir ve yetkisiz erişimi engellemek için doğru şekilde yapılandırılmalıdır.
ls -l dosya.txt
# -rw-r--r-- 1 kullanici grup 0 May 15 10:00 dosya.txt
# (rw: okuma/yazma, r: okuma)
chmod 755 script.sh
# script.sh'ye okuma, yazma, çalıştırma izni verir (sahip için)
# ve diğerleri için okuma, çalıştırma izni verir.
Sonuç
Linux dizin hiyerarşisini anlamak, bu güçlü işletim sisteminde ustalaşmanın ilk ve en önemli adımıdır. FHS standardı sayesinde, hangi dosyanın nerede olması gerektiği konusunda net bir yol haritasına sahibiz. Bu yapı, sadece düzen sağlamakla kalmaz, aynı zamanda sistemin güvenliğini, kararlılığını ve yönetilebilirliğini de artırır. Bu makalede öğrendiğiniz temel dizinler ve komutlar, Linux dünyasında daha bilinçli ve yetkin bir şekilde hareket etmenizi sağlayacaktır. Dizin hiyerarşisi hakkında bilgi sahibi olmak, sorun gidermeden yeni yazılımlar kurmaya kadar her alanda size büyük avantajlar sunacaktır. Linux'u keşfetmeye devam edin!
SSS (Sık Sorulan Sorular)
- Kök dizin (
/) nedir? - Kök dizin, Linux dosya sisteminin en üst seviyesidir ve tüm diğer dizinler ile dosyaların başlangıç noktasıdır. Windows'taki C:\ sürücüsüne benzer ancak tüm dosya sistemini kapsar.
- FHS (Filesystem Hierarchy Standard) neden önemlidir?
- FHS, farklı Linux dağıtımları arasında dizin yapısında tutarlılık sağlar. Bu sayede yazılımlar beklendiği gibi çalışır ve sistem yöneticileri farklı sistemlerde kolayca gezinebilir.
- Kullanıcıların kişisel dosyaları nerede saklanır?
- Her kullanıcının kişisel dosyaları,
/home/kullaniciadiyolunda bulunan kendi ev dizininde saklanır. - Geçici dosyalar hangi dizinde bulunur ve ne zaman silinir?
- Geçici dosyalar genellikle
/tmpdizininde bulunur ve sistem yeniden başlatıldığında veya belirli aralıklarla otomatik olarak silinir. - Sistem yapılandırma dosyaları hangi dizinde yer alır?
- Sistem genelindeki tüm yapılandırma dosyaları
/etcdizininde bulunur.