Linux Dosya Yapısı
Bu yazımızda sizlerle beraber Linux işletim sisteminin dosya dizin yapısını göreceğiz
/bin : Olması zorunlu temel komut dosyalarını içerir.
/boot : Başlangıç için gerekli dosyaları bulundurur.
/dev : Donanım dosyaları vardır.
/etc : Sistem ayarlarını barındırır.
/lib : Kütüphane dosyaları ve çekirdek modülleri bulunur.
/media : Bazı depolama ortamları için bağlanma noktasıdır (detaylı açıklama aşağıdadır).
/mnt : Bazı depolama ortamları için bağlanma noktasıdır (detaylı açıklama aşağıdadır).
/opt : Üçüncü parti kullanıcı programlarının kurulması içindir.
/sbin : Sistemi yöneticisiyle ilgili çalıştırabilir dosyaları tutar.
/srv : Sistemin sunduğu hizmetlerle alakalıdır.
/tmp : Geçici dosyaları tutmak içindir.
/usr : Tüm kullanıcılarca paylaşılan verileri içeren dizindir.
/var : Log dosyaları, e-posta ve yazıcı kuyrukları gibi değişken verileri barındırır.
/bin
İşletim sisteminizi kullanmak için gereken birçok komut /bin klasörü altındadır. cat, mkdir, cp, ls, mv, rm vb. temel komutların hepsi buradadır. Sistem boot ettiğinde, ilk olarak /bin klasörü çalışır hâle getirilir. Sistemde ne kadar ciddi bir sorun olursa olsun /bin klasöründeki komutlar çalışmaya devam eder. Sisteminizde bir sorun meydana geldiğinde /bin klasörü altındaki komutları kullanarak sistemi onarabiliriz.
/boot
Boot, işletim sisteminin yüklenme evresidir. /boot klasörü, boot işlemi için gerekli olan tüm dosyaları içerir (çekirdek görüntüsü, sistem haritası, önyükleyici yapılandırması gibi). Bilgisayarın başlangıç (boot) aşamasında gerekmeyen ayar ve yapılandırma dosyaları burada bulunmaz; başka klasörlerden gerektiği zamanlarda yüklenir.
/dev
Linux’ta her şey bir dosyadır; donanım aygıtları da öyle. USB girişleri, seri ve paralel portlar, depolama ortamları, CD-ROM’lar vb… Bütün aygıtlar /dev klasörü altında tutulan dosyalardan ibarettir. Örneğin /dev altında bulunan sda1 dosyası, sabit diskinizi temsil eder. Ya da /dev/dsp, ses aygıtınızdır. Bunları programlar vasıtasıyla kullanırız; ancak bu dosyalar üzerinden doğrudan müdahale etmek de mümkündür. Mesela cat /boot/vmlinuz > /dev/dsp yazarak çekirdeğin sesini duyabilirsiniz.
/etc
İşletim sistemini bir vücuda benzetirsek, /etc klasörünü sinir sisteminin merkezi olarak görebiliriz. Sisteme dair bütün ayarları barındırır, bulunduğu bilgisayara özel birçok yapılandırma bilgisini içerir. Durağandır, çalıştırılmak için değildir. /etc klasörü içerisinde bulunan bütün klasör ve yapılandırma dosyalarını tek tek incelememiz mümkün değil. Ancak son kullanıcının işine yarayacak bir ipucu verebiliriz.
Sürekli DNS problemleri yaşayanlar, /etc/resolv.conf dosyasını root (yetkili) olarak açıp yeni DNS adresleri ekleyebilir, ayrıntılı bilgi için bkz: DNS adreslerini değiştirmek
/home
home klasörü kullanıcıların kalesi olarak tabir edilir. home klasörü içerisinde her kullanıcının kendi adında bir alt klasörü bulunur. (örneğin /home/turklojen , /home/oguzhan 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. Kullanıcılar /home dizinini elbette belge, müzik, resim vb. dosyaları düzenli, tertipli bir şekilde depolamak amacıyla da kullanabilirler. /home dizini Windows’taki kullanıcı dizinlerine göre çok daha güvenli bir yapıya sahiptir. Çünkü Linux’ta bir başkasının ev klasörüne müdahale edemezken, Windows’ta çok zorlanmadan istediğinizi yapabilirsiniz.
/home dizini, aynı zamanda kullanıcı ayar dosyalarını barındırıyor olması nedeniyle bu dizinini, Windows’taki Documents and Settings ya da Application klasörlerine benzetebiliriz.
/initrd
initrd, “initial ramdisk” kısaltmasıdır. Anlamı, yaklaşık olarak “Başlangıç Bellek Diski” şeklinde ifade edilebilir. Boot aşamasında ilk önce çekirdek (kernel) yüklenir. Bundan sonra bilgisayarınızın belleğinde bir Bellek Diski oluşturulur. Oluşturulan Bellek Disk üzerinde / (root) yansısı açılır ve kök dizin olarak monte edilir. /initrd bu işlemlerin yapılması ve Linux’un yüklenmesi için gereklidir.
/lib
Çekirdek modülleri ve paylaşılan kütüphane dosyaları bu klasörde bulunur. Var olan çekirdek modüllerini /lib/modules/[versiyon_numarasi] içerisinde bulabilirsiniz. Bahsedilen kütüphane dosyalarıysa, sistemi başlatmak ve /bin ile /sbin içerisindeki komutları çalıştırmak için gereklidir. Paylaşılan kütüphane dosyalarını, Windows’ta DLL ile eş tutabiliriz. Linux’ta kütüphane dosyalarının sonu “.so” ile biter.
/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 dosya yöneticisini tam yetki ile açmanız gereklidir. Bunun için Dosyalar sayfasında anlatıldığı gibi sudo -H nautilus komutunu kullanmalısınız.
/media
Kaldırılabilir aygıtların (USB bellek, SD kart, CD vb.) ve sistem bağlangıcında bağlanmayan sabit disk bölümlerinin bağlanma noktasıdır. Söz konusu depolama ortamları sisteme bağlanmamış iken dizin içeriği boş görünür.
/mnt
İşletim sisteminin kurulu olduğu disk bölümü hariç olmak üzere sistem başlangıcında bağlanan sabit disk bölümleri ve donanım aygıtlarının bağlanma noktasıdır. (İşletim sisteminin kurulu olduğu disk bölümünün içeriği ise doğrudan / (kök dizin) altında bulunur.)
Bağlama(mount) işlemi, bir disk bölümünün sisteme bağlanarak kullanıma hazır hâle gelmesi demektir. Nereye bağladığınız sizin tercihinizdir, değiştirmeniz mümkündür. Yani bir diski, /media veya /mnt klasörüne ya da bir başka yere bağlamanız fark etmeyecektir. /media ve /mnt genel kabul görmüş bağlantı noktalarıdır.
/opt
İşletim sisteminden bağımsız, sistem için zorunlu olmayan 3. parti kullanıcı programları bu dizinde bulunur. Örneğin; Google Earth programını indirip kurmak istediğinizde, ‘default’ olarak kurulacağı nokta, /opt/google-earth adresidir.
Elbette üçüncü parti bir programı kurarken bu kurulum konumunu değiştirebilir, size uygun gelen bir başka konuma yükleyebilirsiniz. Ancak daha önce de bahsettiğimiz gibi bazı şeyler genel kabule dayanır.
/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. Bildiğimiz anlamda fiziksel dosyalar bulundurmaz; sistem durumuna dair bilgi içeren sanal dosyaları vardır. Bir bilgi alma merkezi olarak görülebilir, birçok uygulama buradaki bilgilerden yararlanmaktadır. Örneğin “cat /proc/swaps” yazarak sisteminizdeki takas dosyalarına dair bilgi alabilir ya da “cat /proc/cpuinfo” komutuyla işlemcinizin özelliklerini görebilirsiniz.
/proc klasörü içersindeki dosyalar, sadece sistem durumunu görüntülemek için kullanılmaz, gerektiğinde sistemde ayarlama yapmak için de kullanılabilir. Fakat son kullanıcılara hitap eden bir konu değildir. Ayrıntılı bilgi için bakınız Sistemi İzleme Merkezi: /proc
/root
Linux/Unix sistemlerde, işletim sistemine her türlü müdahalede bulunabilme yetkisine sahip, “root” adıyla tanımlanmış, süper yetkili özel bir kullanıcı hesabı vardır. /root dizini, bu özel kullanıcı hesabının ev dizinidir. Root kullanıcısına “kök kullanıcı” da denilir.
Kullanıcıların, sistemi root hesabıyla açma ihtiyacı bulunmaması nedeniyle ve ayrıca sistemi root olarak açmanın güvenlik zaafiyetine yol açabilecek olması nedeniyle pek çok Linux dağıtımında root hesabıyla sisteme giriş yapılması, öntanımlı olarak engellemiştir. Linux dağıtımlarında, yetki gerektiren bir işlemin yapılabilmesi için sistem root olarak açılmaz, bunun yerine geçici olarak root hakları elde edilir. Bunun için, önce bir uçbirim komut satırı penceresi açılır. Sonra kullanmakta olduğunuz Linux dağıtımına bağlı olarak su, su — , su root ya da sudo komutlarından biri girilir ve ardından root kullanıcısının (ya da yönetici hesabın) parolası girilir.
/sbin
Linux’ta normal kullanıcının kullanabileceği komutlarla, kök kullanıcının (root) kullanabileceği komutlar ayrılmıştır. root tarafından kullanılacak bakım ve yönetim için kullanılan önemli programlar, /sbin altında tutulur. Daha az öneme sahip yönetim komutlarıysa, /usr/sbin klasöründedir. Eğer yerelde, yani kullandığınız makineye özgü kök kullanıcı (root) komutları bulunuyorsa, bunları da /usr/local/sbin altında bulabilirsiniz.
/usr
Unix ilk çıktığında, kullanıcılara ait ev klasörleri, /usr altında tutulurdu. Örneğin; “cagatay” isimli bir kullanıcının ev klasörü /usr/cagatay şeklindeydi. Bu yöntem zamanla değişti ve /home klasörü doğmuş oldu. /usr klasörü hâlâ çok önemli bir yapıdır ve işletim sisteminizde kullandığınız her şeyle ilişkisi bulunur.
Kurduğunuz pek çok program /usr içine kurulur. Her ne kadar Linux’ta kurulan bir programa ait tüm dosyalar usr dizini içine atılmıyor olsa da usr dizini Windows’taki Program Files klasörü ile benzer görev görmektedir. /opt adresi işletim sistemi dışında gelen 3.parti programlar içindir. Fakat işletim sistemi aracılığıyla ya da paket yönetim sistemlerini kullanarak yüklediğiniz her şey /usr altına aktarılır. Aynı zamanda yüklediğiniz programların çalışmak için ihtiyaç duyacağı kütüphane dosyaları, /usr/lib altındadır.
/usr, daha geniş bir tanımla; tüm kullanıcılarca paylaşılan verileri (programlar, komutlar, kütüphaneler, dokümanlar gibi) içeren dizindir. /usr ile ilgili söylenebilecek bir başka nokta da “local” klasörüdür. Linux, sunucu olarak birçok istemciye hizmet verebilecek bir işletim sistemidir. Bir Linux sunucu (server) kurarsanız, ona bağlanan yüzlerce istemci (client) olabilir. Her istemci bilgisayara, /usr altındaki programların ayrı ayrı yüklenmesi gerekmez; bir başka konumdan bu komutları çalıştırabilirsiniz. Ancak /usr altında bulunan “local” klasörü sadece kullandığınız makineye özeldir. Örneğin /usr/local/bin klasörü içinde bulunan bütün komutlar, direkt olarak kullandığınız makineye yüklenmiştir. /usr/bin komutları ise geneldir ve bir ağ üstündeki bütün makinelerden erişilebilir. “local” gördüğünüzde, bunun sadece sizin makinenize özel olduğunu bilin.
/var
Log dosyaları, e-posta ve yazıcı kuyrukları gibi değişken sistem bilgilerini barındırır. Sisteminize dair tutulan log’ları buradan görebilir; güvenlik durumunu buradan kontrol edebilirsiniz.
/tmp
Geçici dosyalar içindir. Birçok program, burayı geçici depolama alanı olarak kullanır. /tmp klasörünün içeriği genellikle KB’lar mertebesinde kalır ve genellikle işletim sistemi yeniden başlarken içindeki dosyalar silinir. Her ne kadar tmp klasörü geçici dosyalar için de olsa bu klasör altında bulunan dosyaları, ne yaptığınızdan emin değilseniz, kesinlikle silmemelisiniz! Aksi taktirde sismetinizde ya da bazı programlarda sorun çıkabilir. Örneğin açık bir soket dosyasını sildiğinizde, onu kullanan programa ve kendinize sorun çıkartabilirsiniz.
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.