Linux dosya sistemi hiyerarşisi

Ubuntu Türkiye Wiki sitesinden
23.49, 15 Haziran 2013 tarihinde Hatas (mesaj | katkılar) tarafından oluşturulmuş 15561 numaralı sürüm (kaynak dahilinde maddeyi başlatalım)
(fark) ← Önceki sürüm | Güncel sürüm (fark) | Sonraki sürüm → (fark)
Gezinti kısmına atla Arama kısmına atla

Uzun süreler Windows işletim sistemini kullanan, Program Files, Windows, System32, Documents and Settings gibi klasörlerin görevleri hakkında bilgi sahibi olan kullanıcılar Ubuntu gibi Linux (Unix) temelli bir işletim sistemine geçtiklerinde tamamen farklı bir dosya sistemi hiyerarşisi ile karşılaştıklarından hangi klasörün ne işe yaradığı vb. konularda bir bilgi boşluğuna düşebilirler.

Bir Linux dağıtımından diğerine dosya sistemi yapısı bakımında küçük farklılıklar olabilir ancak genel yapı aynıdır. Bu maddede, Ubuntu ve diğer Linux dağıtımlarının kullandığı ortak dosya sistemi yapısı, dizinlerin ne anlama geldikleri ve Windows'taki bazı dosya ve dizinlerin Linux'taki karşılıkları konularında temel ve ileri düzeyde bilgi alabilirsiniz.

Temel prensipler

Linux'ta tüm dosya ve dizinler " / " işaretiyle gösterilen kök dizinden başlayarak dallanıp budaklanır. Kök dizin altındaki dizinler, geçmişte Linux Dosya Sistem Hiyerarşisi (kısaca FSSTND) denilen bir standart ile belirlenmiş klasörlerdir. Günümüzde Linux dağıtımlarının büyük çoğunluğunun FSSTND tarafından belirlenmiş klasörlerin dışında kök dizine bir iki klasör daha ekledikleri ya da nadiren bu yapıdan bir klasörü çıkardıkları görülmektedir.

Tek kök dizin

Dosya sistemi.png

Sistemde sadece bir tane kök dizin vardır. Herhangi bir dizin ya da dosyanın sistemdeki adresi önce kök dizinden başlar (" / ") sonra o dosya/dizine ulaşmak için geçilmesi gereken dizinler arasına yine " / " yazılarak elde edilir. Örneğin “/home/ahmet” yolu, kök dizinindeki, home isimli dizin içindeki ahmet dizininin konumunu belirtir. Bu ifadede en baştaki “/” kök dizini belirtmektedir.

Windows'ta ise “C:” , “D:” gibi farklı kök dizinler vardır.

Her şey bir dosya

Linux'ta sistemdeki her şey bir dosyadır, buna sistemdeki aygıtlar, donanım kaynakları hatta hafızada çalışan programlar da dahildir. Linux çekirdeği örneğin bir ethernet kartına ulaşmak istediğinde /dev/eth0 dosyasına okuma yazma yapar veya bir sabit disk bölümü için mesela /dev/sda1 dosyasını kullanır. /dev dizini altında aygıtlar /proc dizini altında sistem kaynakları ile ilgili dosyalar bulunur. Ancak bu tür dosyalar sistem açıldığında oluşturulan ve kapandığında kaybolan dosyalardır ve sadece sistem programları tarafından erişilebilir.

Bağlama (mount)

Bağlama (İng. mount), basit bir ifadeyle sisteme takılan sabit disk, USB bellek, CD/DVD gibi çeşitli aygıtların sisteme bağlanarak kullanılabilir, içeriğine erişilebilir bir hale gelmesi işlemidir. Windows'ta sistem açılışında tüm sabit disk bölümleri otomatikmen bağlanırken Linux'ta bu durum seçimliktir. Linux dağıtımlarında sabit disk bölümleri genellikle bilgisayar açılışında otomatik olarak bağlanmaz, kullanıcı bilgisayarı açıktan sonra dosya yöneticisi üzerinden (yani klasörler üzerinden) bir disk bölümüne tıkladığı anda tıkladığı anda o disk bölümü sisteme otomatikman bağlanır. Ubuntu'da Nautilus dosya yöneticisini açıp sol taraftaki panel üzerinden herhangi biri disk bölümüne tıkladığınız anda o disk bölümü sisteme bağlanır. Sisteme bağlanmış olan depolama aygıtlarının yanıda resimdeki gibi bir ok işareti ortaya çıkar.

Sisteme bağlanmış olan disk bölümlerinin yanında oluşan ok işareti

Eğer çeşitli disk bölümlerininzin sistem açılışı sırasında otomatik olarak bağlanmasını isterseniz bunun için Ubuntu ile kurulu gelen "Diskler" aracını kullanarak gerekli ayarlamayı yapabilirsiniz. “Diskler” aracını açmak için seçke menüsünde arama kutucuğuna “diskler” yazabilirsiniz. Bağlama, daha teknik bir ifadeyle /dev dizinindeki depolama aygıtının uygun bir sürücü ve erişim izinleri ile başka bir dizinde kullanılmasını sağlamaktır. Bu güvenliği ve denetimi sağlayan, dağıtık çalışmayı kolaylaştıran bir yöntemdir. Eğer /dev altındaki bu disk bölümlerine NTFS veya Ext gibi bir aygıt sürücüsü ile ulaşılırsa içindeki dosyalar görünecektir, sistem de bu dosyalara kullanıcının erişimi için /dev/ haricindeki başka bir dizini kullanır.

Örneğin /dev/sda1 dosyasındaki disk bölümü /mnt/sda1 dizinine NTFS sürücüsü ve uygun erişim izinleri ile bağlanırsa bu dizinden dosyalara ulaşılabilir olur, bağlama işlemi yapılmadığı sürece /mnt/sda1 dizini boş olacaktır.

Çıkarılabilir aygıtlara medya takıldığında da sistemde sürekli çalışan HAL servisi tarafından takip edilir. Kullanıcı bu medyalara erişmek istediğinde bağlama /media dizinine otomatik olarak yapılır.

Tüm bunların amacı nedir?

Tüm bu tek kök dosya sistemi ve bağlama özelliklerinin amacı çok kullanıcılı ve dağıtık bir sistemi güvenli ve kolay bir şekilde kurup yönetebilmektir. Örneğin birden çok bilgisayarın olduğu bir ağda bilgisayarlardan birisindeki bir ağ dizinine /home dizini bağlanır, bir diğerine /var dizini içerisindeki e-posta sunucusunun dosyalarının olduğu dizin, bir diğerine de Web sunucusunun dosyalarının olduğu dizin bağlanabilir. Bu sayede fiziksel olarak pek çok bilgisayara dağılmış olan bir sunucu tek bir kök dosya sisteminden sanki tek bir bilgisayarmış gibi yönetilerek kullanılabilir.

Her ne kadar bu durum tek kullanıcı ve tek bilgisayardan olaşan masaüstü kullanımı için gereksiz gibi görünse de Linux'un sunucular için sağladığı bu güvenlik özellikleri masaüstünde de aynen kullanılmaktadır.

Hangi dizin ne işe yarar?

Kök dizininde bulunan dizinlerin görevleri kısaca şöyledir:

/bin Olması zorunlu temel komut dosyalarını içerir (cp, mv, ls gibi..). Sistemde bir sorun meydana geldiğinde /bin klasörü altındaki komutlar kullanarak sistem onarılabilmektedir.
/boot Açılış işlemi sırasında kullanılan dosyaları (çekirdek görüntüsü, sistem haritası, önyükleyici yapılandırması gibi..) içerir.
/dev Bilgisayarınızdaki, donanımlarla (sabit diskler, fare gibi..) iletişim kurulabilmesi için gereken özel aygıt dosyalarını içerir.
/etc Sistem ayarlarını barındırır, bulunduğu bilgisayara özel birçok yapılandırma bilgisini içerir. Durağandır ve çalıştırılmak için değildir. Bu dizinde çalıştırılabilir dosyalar bulunmamalıdır.
/home Bu dizin altında, her bir kullanıcı için ayrı ayrı tahsis edilmiş ev dizini mevcuttur (örneğin /home/ahmet , /home/ayşe gibi). Kullanıcıların kişisel verileri, kullandığı programlarda yaptığı ayar değişiklikleri, yapılandırmaları tutulmaktadır. Kullanıcının çeşitli programlarda yaptığı ayarları barındıran dosyalar gizli dosya oldukları için görüntülenebilmeleri için gizli dosyaların görünür hale getirilmesi gereklidir.
/lib Çekirdek modülleri ve paylaşılan kod kütüphanelerini içerir. Windows'ta dll uzantısına sahip olan paylaşılan kütüphane dosyaları, Linux'ta so uzantısına sahiptir.
/lost+found İngilizce bir terim olan “Lost and Found” kayıp eşya bürosu demektir. /lost+found klasörü de tam olarak bu işlevi görmektedir. Bazen sisteminizde herhangi bir problem olur; örneğin bilgisayarı resetlerseniz, elektrik gider sonrasında bilgisayarı yeniden başlatırsınız. Bu gibi durumlarda Linux'ta fsck (File System Check) komutu devreye sokulur. Bu komut Windows'taki Scandisk programına benzetilebilir. Düzeltilemeyen bir sorun varsa, bağlantıları kopmuş kayıp dosyalar ortaya çıkmışsa, bunlar /lost+found altına atılır. Kısaca özetlersek; kötü bir sistem kapanmasından sonra, olması gereken bazı dosyaları bulamıyorsanız, kayıp eşya bürosuna bakmanızda yarar var. Ancak bu klasöre girmek istediğinizde erişimi engelleyen bir ileti ile karşılaşırsınız, bu klasörün içeriğine ulaşabilmek için Nautilus dosya yöneticisini tam yetki ile açmanız gereklidir. Bunun için Nautilus sayfasında anlatıldığı gibi sudo nautilus komutunu kullanmalısınız.
/media Sistem açılışında otomatik olarak bağlanmayan sabit disk bölümleri ile kaldırılabilir aygıtlar (CD-Rom, USB bellek, vb.) bu dizin altında bir dizin açılarak bağlanmaktadır.
/mnt Sistem açılışında otomatik olarak bağlanan sabit disk bölümleri bu dizin altında bir dizin açılarak bağlanmaktadır.
/opt Sistem için zorunlu olmayan 3. parti kullanıcı programları bulunur.
/proc Süreçler, sistem belleği, bağlı aygıtlar, donanım yapılandırmalarıyla ilgili bilgileri içeren özel bir “sanal” dosya sistemidir. Fiziksel dosyalar bulunmaz. Bir bilgi alma merkezi olarak görülebilir, birçok uygulama buradaki bilgilerden yararlanmaktadır.
/root Sistem yöneticisinin (yani “root” kullanıcısının) ev dizinidir.
/usr Tüm kullanıcılarca paylaşılan verileri (örneğin programlar, komutlar, kütüphaneler, dokümanlar gibi) içeren dizindir.
/var Değişken verileri içerir (örneğin rapor dosyaları, veritabanları, kuyrukta bekleyen yazdırılacak dokümanlar gibi)
/tmp Geçici dosyaları içerir. Yalnız geçici olduğu için bu dosyaları silmek tehlikeli olabilir. Ama yine de belirli zaman aralıklarında temizlenebilir.

Şunu özellikle belirtmek gerekir. Linux, Windows'tan farklı bir dizin hiyerarşisi izler. Windows'ta genellikle yüklenen programlar Program Files klasörü altında saklanırken 'da duruLinux'da size çok daha farklı gözükecektir. Linux'da bir programın dosyaları aynı türdeki dosyaları saklayan gerekli klasörlere dağıtılır. Bu şekilde aradığınız bir yerelleştirme dosyasını yani programın Türkçe çalışması için yapılmış çeviri dosyasını, programın kullandığı kütüphane dosyasını yani Windows'taki (.dll) Linux'daki (.so) dosyası ve bunun gibi belirli bir amaç için kullanılan dosyaları yerleştirilmiş oldukları kendine özgü klasörün içinde bulabilirsiniz.

Erişim izinleri

Linux sistemlerde her dizin ve dosyanın bir Sahip Kullanıcısı ve bir de Sahip Grubu vardır. Erişim izinleri de sahibi, grubu ve diğerler kullanıcıların izinleri olarak üç kategoride ayarlanabilir. Bunlardan her birisine okuma, yazma ve çalıştırma yetkileri verilebilir veya kısıtlanabilir.

Örneğin; /root dizininin sahip kullanıcısı "root", sahip grubu yine "root" olarak ayarlanmıştır. Erişim izinleri de Sahibi:Okuma-Yazma, Grubu:İzin yok, Diğerleri:İzin yok olarak ayarlanmıştır. Böylece bu dizine sadece "root" kullanıcısı erişebilmektedir.

Depolama aygıtları

Linux'ta depolama aygıtları diğerleri gibi /dev dizini altındaki bir dosyadır ve bağlama yöntemiyle ulaşılabilir. Depolama aygıtlarının bir kısmı /mnt dizini altına bağlanırken bir böllümü ise /media dizini altına bağlanır.

  • Ubuntu'da /media dizini altına bağlanan depolama aygıtları şunlardır:
    • Sistem açılışında otomatik bağlanmayan sabit disk bölümleri
    • Çıkarılabilir depolama aygıtları (USB bellek, CD/DVD vb.)
  • Ubuntu'da /mnt dizini altına bağlanan depolama aygıtları şunlardır:
    • Sistem açılışında otomatik bağlanan sabit disk bölümleri
  • Bağlama dizinlerinin isimlendirilmesi ise şöyle açıklanabilir:
  • /media dizini altına bağlanan depolama aygıtlarında depolama biriminin etiketi dikkate alınır ve /media altına bu isimde bir dizin oluşuturulur. Eğer birimin etiketi yoksa "disk, disk-1, disk2..." gibi otomatik isimler verilir.
  • /mnt dizini altına bağlanan depolama aygıtları; kullanıcının belirlediği isimde bir dizin açılarak bağlanır.

İpuçları

  • Ubuntu'da gizli dosyaları şurada anlatıldığı şekilde görünür hale görüntüleyebilirsiniz.
  • Windows'ta kullanıcıların çeşitli programlarda yaptığı değişiklik ve ayarlamaların tutulduğu Documents and Settings ya da “Application” klasörlerinin yerini Linux'ta büyük oranda Ev Dizini almaktadır.
  • /home dizini altındaki kullanıcı ev dizinlerine erişim için bir kısayol vardır, şöyle ki; bir kullanıcı, kendi ev dizinindeki metin.txt adındaki bir dosyaya ulaşmak için dosya yöneticisinde adres çubuğuna ~/metin.txt yazarak erişebilir. Yani “~” işareti her kullanıcı için, o kullanıcının ev dizinini belirtir.
  • Mevcut tüm diskleri ve bölümlerini komut satırında sorgulamak için yönetici olarak fdisk -l (küçük L) komutu verilir.
  • Programların dil dosyaları /usr/share/locale dizininde saklanır.
  • Linux'ta (.so) yani kütüphane dosyaları diğer bir değişle Windows'ta bulunan (.dll) dosyalarının benzerleri lib ve usr/lib dizinlerinde yer alır.
  • Windows’taki Program Files klasörü Linux'ta yaklaşık olarak /usr klasörüne benzemektedir.
  • Windows'ta bulunan CONFIG.SYS ve AUTOEXEC.BAT gibi sistem açılışı ve pencere sisteminin düzenini etkileyen dosyaların yer aldığı dizin /etc dizinidir.
  • Geçici dosyaların yer aldığı dizinler /tmp ve /var/tmp dizinleridir.

Kaynakça