swetrix
linux directory structure

Linux Dosya/Dizin Yapısı

Linux türevi işletim sistemlerinde dizin olarak adlandırılan yapı diğer işletim sistemlerinde Dosya olarak adlandırılmaktadır. Dosya sistemi, işletim sisteminin bir disk veya bölüm üzerindeki dosyaları takip edebilmesi için oluşturulmuş yöntem ve veri yapıları bütünüdür. Linux’da, Unix’de olduğu gibi “Tekil Hiyerarşik Klasör Yapısı”nı benimsemiştir. Her şey / simgesiyle ifade edilen kök dizinden başlayarak dallanır. Kök dizin altındaki dizinler, geçmişte Linux Dosya Sistem Hiyerarşisi (FSSTND) denilen bir standart ile belirlenmiş klasörlerdir. 

Kök Dizin (/) : Dosya sistemi bir ağaç yapısı olarak örneklenecek olursa, bütün dosyaların köküdür denilebilir. Diğer bütün dosyalar kök dizinden dallanarak gider ve kök dizin bütün dizinleri içerisinde barındırır.

Kök dizini önyükleme esnasında hafızaya yüklenen ilk bölümdür. O dosya ya da dizine ulaşmak için geçilmesi gereken dizinler arasına yine “/” yazılarak elde edilir. Örneğin; /home/omer yolu, kök dizininde, home isimli dizin içindeki omer dizininin konumunu belirtir.

Örneğin; Linux ile sistem üzerindeki ethernet kartına ulaşmak için /dev/eth0 dosyası kullanılır.

Başlıca alt dizinler /bin, /boot, /dev, /etc, /home, /initrd, /lib, /lost+found, /misc, /mnt, /opt, /proc, /root, /sbin, /tmp, /usr ve /var dizinleridir. Kök dizinine başka alt dizinlerin eklenmesi ancak yönetici hesabının kullanılmasıyla olur yönetici ve kullanıcı izinleri ile ilgili her şeye de buradan ulaşabilirsiniz .

Windows’ta dosya adreslerinde \ (ters slaş) işareti kullanılırken Linux’ta / işareti kullanılır. Linux’ta ki bu kullanımın nedeni Linux’un Unix geleneğini takip etmesindendir. Ayrıca bu geleneğe uygun olarak küçük büyük harf duyarlılığı önemli bir konudur. Örneğin; Windows’ta klasöre isim olarak LINUXPEDI ve linuxpedi aynı şeydir fark etmez. Linux’ta ise bunlar farklı klasörlerdir.

Linux, Windows işletim sistemindeki gibi C:D: gibi sözde sürücüler bulunmaz. Windows’ta bir program yüklediğinizde, programa ait dosyaların büyük çoğunluğu Program Files içindeki kendi klasörüne yüklenir. Linux’ta ise durum farklıdır; programın örneğin; belgelendirmeleri /usr/share/doc/program_adi/ altına atılır, man(ual) dosyaları, /usr/share/man/man altına atılır, info dosyaları /usr/share/info altına atı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’da ki (.so) dosyası ve bunun gibi belirli bir amaç için kullanılan dosyaları yerleştirilmiş oldukları kendine özgü klasörün içinde bulabilirsiniz. Yüklenen herhangi bir program, işletim sisteminin muhtelif yerlerine yerleşmektedir.

Her işlem bir dosya

Linux’ta sistemdeki her şey bir dosyadır, buna sistemdeki aygıtlar, donanım kaynakları hatta benzer şekilde kamera, klavye, sabit disk ve çalışan uygulamalar bile dizin yapısı içinde yer alan dosyalarda tutulur. 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, 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 hale gelmesi işlemidir.

Windows işletim sistemi, bilgisayar açılışında gördüğü tüm disk bölümlerini başlangıçta bağlayarak kullanıma hazır hale getirirken Linux dağıtımlarında ise bu durum seçimliktir. Linux’ta, işletim sisteminin kurulu olduğu disk bölümü dışındaki bölümler genellikle, kullanıcı tarafında ilk erişim sağlanıncaya kadar bağlanmaz. Kullanıcı bilgisayarı açtıktan sonra dosya yöneticisi üzerinden bir disk bölümüne tıkladığı anda o disk bölümü sisteme otomatikman bağlanır.

inux directory structure 3 2
İşaretli alanda gösterildiği gibi.

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çinde ki 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.

Tüm bunların nedeni nedir?

Tüm bu tek kök dosya sistemi ve bağlama özelliklerinin amacı çok kullanıcılı ve dağıtık bir sistemi daha güvenli ve kolay bir şekilde kurup yönetebilmektir. Örneğin; birden çok bilgisayarın olduğu bir ağda bilgisayarlardan birisinde ki 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 rahatlıkla kullanılabilir.

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

FSSTND’a göre kök dizin altındaki temel klasörler


linux directory structure 2 2

Linux Dosya Sistem Hiyerarşisi (FSSTND) standartına göre kök dizin altında bulunan dizinlerin görevlerine bakalım;

/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.
/mnt   : Bazı depolama ortamları için bağlanma noktasıdı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.


Günümüzde Linux dağıtımlarının pek çoğunun FSSTND standartında belirlenmiş klasörlerin dışında kök dizine bir iki klasör daha eklediği ya da nadiren bu yapıdan bir klasörün çıkardığı görülmektedir. Bu küçük farklılıklar dışında Linux dağıtımlarında genel yapı aynıdır. Şimdi, gerek güncel dağıtımları, gerekse FSSTND’yi baz alarak kök dizin altında yer alan klasörlerin görevlerini inceleyelim.


/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/omer , /home/samet 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ı 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, 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.


/boot

Boot, işletim sisteminin yüklenme evresidir. İşletim sisteminin başlatılması için kullanılan Linux çekirdek dosyaları, grub, lilo vb. önyükleme dosyaları bu dizinde bulunur. 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.


/lib ve /lib64

Ç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. İşletim sisteminin mimarisine göre ayrıca lib64 dizininde de yer alır. Bahsedilen kütüphane dosyalarıysa, sistemi başlatmak ve /bin ile /sbin içerisindeki komutları çalıştırmak için gereklidir. Linux’ta kütüphane dosyalarının sonu “.so” ile biter.


/opt

İşletim sisteminden bağımsız, sistem için zorunlu olmayan 3. parti kullanıcı programları bu dizinde bulunur. Örneğin; program-adı programını indirip kurmak istediğinizde, ‘default’ olarak kurulacağı nokta, /opt/program-adı adresidir.

Tabi ki üçüncü parti bir programı kurarken bu kurulum konumunu değiştirebilir, size uygun gelen bir başka konuma yükleyebilirsiniz.


/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

Sistem üzerindeki CD-Rom, USB bellek vb. çıkarılabilir aygıtlara bu dizin üzerinde erişilir. Söz konusu depolama ortamları sisteme bağlanmamışken dizin içeriği boş görünür.


/srv

Sistem içinde bulunan servislerle ilgili dosyaların yer aldığı dizindir.


/usr

Unix ilk çıktığında, kullanıcılara ait ev klasörleri, /usr altında tutulurdu. Örneğin; “metehan” isimli bir kullanıcının ev klasörü /usr/metehan ş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’ta ki 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.


/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.


/bin

İşletim sisteminizi kullanmak için gereken komutlar/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.


/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 önemli olan 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.


/etc :

Linux türevi işletim sistemlerindeki en önemli dizindir. İşletim sistemini bir vücuda benzetirsek, /etc klasörünü sinir sisteminin merkezi olarak görebiliriz. Sisteme dair bütün yapılandırma, bu klasör veya bu klasörün alt klasörlerinde bulunur. Yapılandırma dosyası, bir programın işlemlerini kontrol etmek için kullanılan lokal bir dosyadır; durağandır ve çalıştırılmak için değildir.

Sürekli DNS problemleri yaşayanlar, /etc/resolv.conf dosyasını root olarak açıp, yeni DNS adresleri ekleyebilir. Siz de bu sorunlardan müzdaripseniz, root olarak bu dosyayı açıp aşağıdaki satırları dosyanın en başına ekleyin:

nameserver 208.67.222.222
nameserver 208.67.220.220

Verilen adresler OpenDNS adında bir firmaya ait. Telekom’un adresleri yerine bunları kullanırsanız; adres çözümleme problemleriniz geride kalacaktır. Üstelik erişimi engellenen sitelere de girebilirsiniz.


dev

Linux’ta her şey bir dosyadır; donanım aygıtları da öyle. USB girişleri, seri ve paralel portlar, diskleriniz, 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 direkt müdahale etmek de mümkündür. Mesela;  

cat /boot/vmlinuz > /dev/dsp

yazarak çekirdeğin sesini duyabilirsiniz.


Bazı önemli aygıt dosyaları:

/dev/psaux  : PS/2 girişi; fare ve klavyeler içindir.
/dev/ttyS0  : Fare, modem gibi aygıtların bağlandığı seri port (COM 1).
/dev/lp0    : Paralel port (LPT 1); yazıcı, tarayıcı vs...
/dev/usb    : USB aygıtları
/dev/dsp    : Birincil ses aygıtı
/dev/sda    : SCSI aygıtlar, USB bellekler, harici CD-ROM'lar vs...
/dev/js0    : Oyun çubuğu (Joystick)
/dev/scd    : SCSI CD-ROM'lar

/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.


/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 sisteminizde ya da bazı programlarda sorun çıkabilir.


/root

Unix’in ilk versiyonlarında root kullanıcısının kendine ait bir ev klasörü yoktu. Direkt olarak / (root klasörü) altında çalışırdı. Fakat zamanla bunun iyi bir yöntem olmadığı anlaşıldı ve root kullanıcısının ayrı bir klasöre sahip olması gerektiğine karar verildi.

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ıdı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ı, ön tanı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 terminal 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 yöneticinin parolası girilir.

Ubuntu’da geçici olarak root yetkisi almak için sudo komutu kullanılmaktadır. Grafik arayüz üzerinde de geçici olarak kök kullanıcı hakları alınabilir.


/lost+found

İngilizce bir terim olan Lost and Found, kayıp eşya bürosu demektir.

Bazen sistemimizde bir problem olur; yanlış kapatırız, elektrik gider, durup dururken bilgisayar yeniden başlar vs… Bu gibi durumlarda Linux’ta fsck (File System Check) komutu devreye sokulur. fsck, 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.


Bu yazımızda gerekli olan bilinmesi gereken kök dizinlerin hepsine değindik gerekli olan diğer bilgileri sitemizde bulabilirsiniz sorularınızı ve merak ettiklerinizi lütfen yorumlarda paylaşın.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Önceki Yazı
chmod cover

Linux’ta chmod ile dosya ve klasör izinleri

Sonraki Yazı
ansible_cover

Ansible 101: Kurulum ve Temel Bileşenler Rehberi

Benzer Yazılar