Erişim Hakları ve Linux Dosya İşlemleri



Benzer belgeler
Linux altında komut satırında...

man komut man ls (ls komutu hakkında bilgi verir.) man pwd (pwd komutu hakkında bilgi verir.)

nereye : Mount edilecek dosya sistemi hangi dizin altina yerlestirilecegini belirtir.

LİNUX. Dosyalar ve dizinler

Linux işletim sistemlerinde dosya hiyerarşisinde en üstte bulunan dizindir. Diğer bütün dizinler kök dizinin altında bulunur.

Linux ta komutlar hakkında yardım almak için aşağıdaki komutlar kullanılır : - man - info - whatis - apropos

3. DOSYA SİSTEMİ VE ÇALIŞMA MANTIĞI

Linux Dosya ve Dizin Yapısı

Fstab Rehberi. Ceren Çalıcı. Nisan, 2012

LİNUX. Dosyalar ve dizinler

Temel Linux Eğitimi 1., 2. ve 3. Bölümler

Dosya/Dizin İzinleri. Okuma (r) Yazma (w) Çalıştırma (x) Dosya içeriğini görebilir mi? (Klasörler için) dosya listesini alabilir mi?

BİLGİ İŞLEM DERS 3. Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ MSGSU FİZİK BÖLÜMÜ

Windows 2000 veya XP kurarken dosya sistemini seçmeniz gerekir. Ya FAT32 dosya sistemini kullanırsınız ya da NTFS.

B-Tree Dosya Sistemi (BTRFS)

Komut Penceresi ile Çalışmaya Başlamak

Dosya, disk üzerinde depolanmış verilerin bütününe verilen isimdir. İşletim sistemi genel olarak iki çeşit dosya içerir.

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Autofs. Hüseyin Kaya

Aşağıda listelenen temel linux komutları bilgisayarınızın komut satırında çalıtırılacaktır.

DOSYA NEDİR? Verilerin HDD de saklanması. Verilerin HDD de saklanması DOSYA SİSTEMİ NEDİR?

Temel Kavramlar-2. Aşağıda depolama aygıtlarının kapasitelerini inceleyebilirsiniz.

Temel LINUX Komutları

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Linux Dosya Yapısı. Eren BAŞTÜRK.

Regular Expressions Version 0.1

İNTERNET PROGRAMCILIĞI HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

FreeBSD Erişim Kontrol Listeleri

BTP 205 İŞLETİM SİSTEMLERİ

Sun Solaris Sunucular için Felaket Kurtarma (DR-Disaster Recovery) Çözümleri

AÇIK KAYNAK İŞLETİM SİSTEMLERİ - BÖLÜM 1. Temel komutlar,dosya ve Dizin İşlemleri, Kullanıcı ve Grup İşlemleri

Yrd. Doç. Dr. A. Burak İNNER

Adli Analiz İşlemlerine Başlamak

SIMAN KULLANIM KILAVUZU

Yrd. Doç. Dr. A. Burak İNNER

BİLGİ İŞLEM DERS 1. Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ MSGSU FİZİK BÖLÜMÜ

Temel Bilgisayar Programlama

Linux Ubuntu Kurulumu

Temel Linux Komutları

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

NFS (Network File System) & NIS (Network Information System) H. Coşkun Gündüz cgunduz@cs.bilgi.edu.tr

Widows un çalışmasında birinci sırada önem taşıyan dosyalardan biriside Registry olarak bilinen kayıt veri tabanıdır.

Bağlantı Kılavuzu. Desteklenen işletim sistemleri. Yazıcıyı Yazılım ve Belgeler CD'sini kullanarak kurma. Bağlantı Kılavuzu

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Kurumsal Güvenlik ve Web Filtreleme

Module 2 Managing User And Computer accounts

Kurumsal Güvenlik ve Web Filtreleme

Pardus ta Komutlarla Çalışmak

İşletim Sistemlerine Giriş

İŞLETİM SİSTEMLERİ. İŞLETİM SİSTEMİ Kavramı. Klasör ve Dosya Mantığı. Klasör ve Dosya Mantığı

Bağlantı Kılavuzu. Yazıcıyı yerel olarak yükleme (Windows) Yerel yazdırma nedir? Yazıcıyı Yazılım ve Belgeler CD'sini kullanarak kurma

Linux Sunucuları için Güvenlik İpuçları. Korhan Gürler, Burç Yıldırım

Dosya Yönetimi. Dosya, Klasör ve Sürücüler. Ahmet SOYARSLAN biltek.info

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

Windows XP: Simple Sharing, Security ve ForceGuest Perşembe, 07 Eylül :02 - Son Güncelleme Cumartesi, 12 Eylül :36

Dosyaların Özellikleri (Attribute) Dosya İşlemleri. İki Seviyeli Katalog Sistemleri. Tek Seviyeli Katalog Sistemleri. Hiyerarşik Katalog Sistemleri

1. Başlarken. 1.1 Güvenlik Önlemleri. 1.2 Sistem Gereksinimleri. 1.3 Paket İçeriği

Windows Đşletim Sistemleri AD Etki Alanı Grupları Đncelenmesi ve Güvenlik Ayarları

İşletim Sistemleri. Discovering Computers Living in a Digital World

VISUAL BASIC DE İŞLETİM SİSTEMİ DENETİM KOMUTLARI VE FONKSİYONLARI

$ rm dosya1 dosya2 dosya3 dosya4 dosya5 dosya6 dosya7 dosya8

AKINSOFT. Eofis NetworkAdmin. AKINSOFT EOfis NetworkAdmin Kurulumu Bilgi Notu. Doküman Versiyon : Tarih : Copyright 2008 AKINSOFT

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

Dosya Yönetim Sistemi Hazırlayan : mustafa kaygısız Kaynak: megep.meb.gov.tr

1. GİRİŞ Bu bölümde; Kartlı Geçiş Kontrol ve Personel Devam Kontrol terminallerinin temel içeriği ve kart tanımlama hakkında önbilgi verilecektir.

IPACK LADDER. Arayüz Dökümantasyonu

Table of Contents

WebInstaller. 1. Kurulum Đçin Gereksinimler

Yrd. Doç. Dr. Caner ÖZCAN

Eln 1002 Bilgisayar Programlama II

Özyineleme (Recursion)

$ echo $PATH /sbin:/bin:/usr/sbin:/usr/bin:/usr/x11r6/bin: /usr/local/sbin:/usr/local/bin:/usr/games:.

LINUX YAPISI VE KOMUTLARI

Şekil 2.1 : Şekil 2.2 : Şekil 2.3 :

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

İşletim Sistemi Nedir?

JAL IN İNTERNET TEN İNDİRİLMESİ VE KURULMASI

Dosya Saklama Ortamları (Sabit Diskler) Kütük Organizasyonu 1

BİT in Temel Bileşenleri (Yazılım-1)

Bilgisayarım My Computer. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Bilgisayarım My Computer

1. Portala Giriş. 2. Portalın Kullanımı Genel

DENEME SINAVI CEVAP ANAHTARI

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

EKLER EK 12UY0106-5/A4-1:

İnternet Programcılığı

Linux un Tarihsel gelişimi

Dersin Konusu ve Amaçları: Ders P lanı: Bölüm 1: Bilgi Teknolojilerinde Temel Kavramlar

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Komutlar (Devam) ls -a > deneme (ls -a komutunun çıktısı deneme isimli. ls -a >> deneme (ls -a komutunun çıktısı deneme

Temel Linux Eğitimi. İçindekiler

Bilgilerin Uzun Vadeli Saklanması

ProFTPD FTP Sunucusu. Devrim GÜNDÜZ. TR.NET Sistem Destek Uzmanı.

LİGHTKOD SETUP MAKER KULLANIMI 1- Giriş Programı yükledikten sonra Setup Maker programını açtığımızda aşağıdaki pencereyi görürüz. Burada 1.

Scream! e gelen veri akışlarından bazılarını diğer bir kurum yada bilgisayarla paylaşmak için kullanılabilir.

ecyber Kullanıcı Kılavuzu 1 / 1 1. ecyber hakkında Sistem gereksinimleri:... 2 Donanım:... 2 Yazılım: Kullanım Rehberi...

BLGM 343 DENEY 8 * TCP İLE VERİ İLETİŞİMİ

Merkezi İşlem. Birimi

Transkript:

Erişim Hakları ve Linux Dosya İşlemleri 1. Erişim Hakları Erişim hakları, Linux dosya sistemi güvenliğinin belkemiğini oluşturur. Her dosyaya ayrı verilebilen erişim izinleri sayesinde çok daha rahat bir sistem yönetimi gerçekleştirilebilir. Bu, konuya sadece sistem görevlisi tarafından yaklaşıldığı zaman çıkartılabilecek bir sonuçtur. Kullanıcı bazında erişim hakları bazen daha da anlamlı olabilir. Yanlış kullanıldığında hoş olmayan sürprizlere yol açabilir. Linux altında üç çeşit erişim hakkı vardır: Okuma izni : Dosyanın okuma izni varsa içeriği görülebilir, dizinin okuma izni varsa içerdiği dosyaların listesi alınabilir. Yazma izni : Dosyanın yazma izni varsa dosyayı değiştirebilir veya silebilirsiniz. Dizine yazma izni verildiğinde dizin altındaki dosyalar yazılabilir veya silinebilir. Çalıştırma izni : Dosyayı çalıştırma hakkını verir. Bir dosya veya dizin ilk yaratıldığı anda Linux tarafından ön tanımlı bazı izinler verilir. Genellikle bu izin çalıştırma ve okumadır. Dosyanın oluşma anında verilen izini değiştirmek için erişim yetki kalıbı olarak da bilinen umask komutu kullanılır. Daha fazla bilgi için komuta ait man dosyasına bakınız: $ man umask umask kullanıcıların herhangi bir dosya oluştururken default olarak dosya izinlerinin oluşturulmasına yarar. Bu izinler her kullanıcının açılış dosyalarının içinde (.profile,.cshrc) veya sistemin default umask tanımlamasında mevcuttur. Kendi default umask değerlerinizi görmek için: $ umask 022 umask komutu neticesinde dönen 3 rakamlı blok sizin umask değerlerinizdir. Bu üç rakam okuma-yazma-çalıştırma izinlerinin rakamsal temsilini gösterir. Rakamların anlamı aşağıdaki gibidir: 0 Oku ve yaz (ve dizinler için çalıştır) 1 Oku ve yaz (ve dizinler için çalıştırma) 2 Oku (ve dizinler için çalıştır) 3 Oku 4 Yaz (ve dizinler için çalıştır) 5 Yaz 6 Çalıştır 7 İzin yok Bu listeyi kullanarak 022 nin kulanıcının kendi dosyalarında okuma ve yazma izni olduğunu grubun okuma izni olduğunu ve sistemdeki herkesin okuma iznine sahip olduğunu gösterir.

Erişim haklarının dışında bir dosyanın üç izin düzeyi daha vardır. Bunlar, dosyanın sahibi, dosyanın grubu ve diğer kullanıcılardır. Dosyanın sahibi, o dosyayı oluşturan kişidir. Her kullanıcının bir grubu da olduğu için, dosya oluşturulurken kullanıcı hangi grupta ise dosya da o gruba ait olacaktır. Dosyanın sahibi olmayan ve grubu da dosyanın grubuyla uyuşmayan sistemdeki kullanıcılar diğer sınıfına girerler. 1.1. Dosya İzinlerinin Değiştirilmesi Dosya izin bilgilerini görebilmek için ls komutu, -l parametresiyle kullanılır. Aşağıdaki dosya üzerindeki erişim haklarına göz atalım: -rwxr-xr-x 2 serdar users 367 May 20 16:45 deneme Dosya bilgisinin en sol kısmında izin hakları yer alır. En baştaki - işareti bunun dizin değil, düz dosya olduğunu belirtir. serdar dosyanın sahibi; users ise grubudur. Ardından sırayla uzunluk, son değiştirilme tarihi ve dosya ismi gibi bilgiler gelir. Son harf kümesine dosyanın modu da denir. Solda yer alan r,w ve x karakterleri sırayla okuma, çalıştırma ve yazma haklarını belirtir. En soldaki - işaretini ayırdığımız zaman geri kalan harfleri üç adet üçlü grup haline getirelim: rwx r-x r-x Sırayla birinci harf kümesi dosya sahibinin izinlerini, ikinci harf kümesi grup izinleri ve son küme de diğer kullanıcıların izinlerini belirtir. Buna göre yukarıdaki dosyada rwx : kullanıcı okuyabilir, yazabilir, çalıştırabilir (u) r-x : grup okuyabilir, çalıştırabilir fakat yazamaz (g) r-x : diğerleri okuyabilir, çalıştırabilir fakat yazamaz (o) Sol baştaki karakter d olsaydı, bir dizini inceliyor olacaktık. Dosyanın izinlerini değiştirmek için chmod komutu kullanılır. Bu komutu kullanırken hangi izin düzeyine (kullanıcı, grup veya diğerleri) hangi izinlerin verileceği veya kaldırılacağı yazılır. Örnek olarak yukarıdaki dosyanın okuma iznini kaldırmak için: $ chmod -r deneme kullanılabilir. "-" işareti, iznin kaldırılacağını belirtir. İzin vermek için ise "+" yazın. Dosyanın yeni görüntüsü şöyle olur: --wx--x--x 2 serdar users 367 May 20 16:45 deneme Sadece grubun, sadece kullanıcının veya sadece diğerlerinin erişim hakkını değiştirebilmek için her izin düzeyi için bir harf tanımlanmıştır. Kullanıcı için "u", grup için "g" ve diğerleri için "o" yazarak belirli bir izin düzeyi için erişim hakkını değiştirmek mümkün olur. Bu üç harf, izinden hemen önce yazılır.

$ chmod u+x deneme (dosyanin sahibi calistirabilir) $ chmod o+r deneme (digerleri okuyabilir) $ chmod g-w deneme (dosyanin grubu yazamaz Her izin için aynı zamanda sayılar da tanımlanmıştır. Dosyanın erişim izinlerini değiştirmek için her izne ait sayıları kullanabilirsiniz. Aşağıdaki tabloda, her izin düzeyi (dosyanın sahibi, grubu ve diğerleri) için üçer tane olmak üzere toplam 9 sayıdan oluşan izin numaralarını görebilirsiniz. Bir izni vermek için sırayla numaraları toplayın. Örneğin sahibinin okuması (400), yazması (200), çalıştırması (100), grubun okuması (40), çalıştırması (10) ve diğerlerinin okuması (4) ve çalıştırması (1) için kullanılan rakamların toplamı 755'tir. $ chmod 755 deneme 400 : sahibi okur. 200 : sahibi yazar. 100 : sahibi çalıştırır. 040 : grubu okur. 020 : grubu yazar. 010 : grubu çalıştırır. 004 : diğerleri okur. 002 : diğerleri yazar. 001 : diğerleri çalıştırır. Başka bir değişiklikle konuyu pekiştirelim. Sahibinin okuması (400), yazması (100), grubun okuması (40), diğerlerinin okuması (4) için izin numarasını bulmak için bu cümlede parantez içinde yer alan sayıları toplarsak 644 yapacaktır. $ chmod 644 deneme Aynen dosyalarda olduğu gibi, bir dizinin de sahibi ve grubu vardır. 1.2. Dosyanın Sahibinin ve Grubunun Değiştirilmesi Bir dosyanın sahibini sadece sistemdeki root kullanıcı değiştirebilme yetkisine sahiptir. Dosya sahibinin değiştirilmesi için chown komutu kullanılabilir. Yukarıdaki dosyanın sahibini serdar isimli kullanıcı yapalım. # chown serdar deneme Dosyanın yeni hali şöyle olur: -rwxr-xr-x 2 serdar users 367 May 20 16:45 deneme

chgrp komutu yardımıyla da dosyanın grubunu değiştirilebilir. Yukarıdaki dosyanın grubunu hbm yapmak için: # chgrp hbm deneme komutu kullanılabilir. chown komutu, dosyanın hem kullanıcısını, hem de grubunu değiştirme özelliğine sahiptir. chown komutundan sonra kullanıcı ve grup isimlerini aralarında bir nokta kalacak şekilde yazın: $ chown serdar.hbm deneme $ ls -l deneme -rwxr-xr-x 2 serdar hbm 367 May 20 16:45 deneme Bir dosyaya veya dizine erişim Kullanıcı Kimlik Numarası (UID) ve Grup Kimlik Numarası (GID) ile saptanır. UID : Diziyi veya dosyayı yaratan kullanıcıyı tanımlar veya sahipliğini saptar GID : Dizini veya dosyayı sahiplenen kullanıcı grubunu tanımlar. Bir dosya veya dizin aynı zamanda sadece bir gruba ait olabilir. Tüm dosya ve dizinler UID ve GID sayısını içerir. Sistem süreci = Dosya veya Dizin 2. Dosya Sistemleri Üzerinde İşlemler Bir Linux işletim sisteminde dosyaların ve dizinlerin herbiri sabit disk, CDROM veya diğer bilgi saklamaya yarayan cihazların birer parçası olan "dosya sistemlerinde" tutulur. Linux'un desteklediği pek çok dosya sistemi vardır ve bunların her birisinin veri depolarken kullandıkları yöntem birbirinden farklıdır. Linux'ta her dosya sistemi farklı bir dizinde tutulur ve bu dizinlerin bilgisi /etc/fstab dosyasında yer alır. Açılış anında bu dosyada hangi dosya sistemlerinin hangi dizinler altına yerleştirileceği okunur ve buna göre makina açılır. Linux, kendisi için özel olarak geliştirilen ext2 dosya sistemini kullanır.

2.1. Mount İşlemi Bir dosya sisteminin kullanılabilmesi için boş bir dizin altına yerleştirilmesi gerekir. Ancak bu gerçekleştirilirse söz konusu dosya sistemini oluşturan dosyalar üzerinde işlem yapılabilir. Bu işlem mount komutu yardımıyla yapılır. mount komutu şu şekilde kullanılır: mount -t <tip> <nereye> <aygit> tip : Dosya sistemi çeşidi. Örnek dosya sistem çeşitleri arasında ext2, minix, msdossayılabilir. Genellikle mount programı ne tür bir diske eriştiğini otomatik olarak anlayacaktır. nereye : Mount edilecek dosya sistemi hangi dizin altına yerleştirileceğini belirtir. aygıt : Üzerinde dosya sisteminin bulunduğu sabit disk, CD-ROM benzeri aygıt. Linux'a bağlı olan tüm donanımlara ait bir giriş, /dev dizini altında bulunur. Bu dizin altındaki dosyalar özel olarak tanımlanmıştır ve bunlara kısaca "düğüm" adı verilir. Örneğin /dev/hda2, birinci IDE sabit diskin ikinci bölümünü; /dev/tty1 ise birinci sanal konsolu gösterir. Çeşitli sabit disklere ait /dev düğümlerine, Linux Kurulumu bölümünde detaylı olarak değinilmişti. mount programı bu düğümlere ihtiyaç duyacaktır. Bu yüzden bir dosya sistemini erişilebilir hale getirebilmek için hangi düğüm ismine sahip olduğunu bilmelisiniz. Örnek olarak CD-ROM için /dev/cdrom, birinci disket sürücü için /dev/fd0 gibi. Örneğin, CD-ROM sürücüsünü /mnt altına mount etmek için : # mount -t iso9660 /dev/cdrom /mnt yazın. Eğer çekirdekte CD-ROM dosya sistemi desteği varsa ve sistem açılırken çekirdek CD- ROM'u tanımışsa /mnt dizini altına CD'deki dosya sistemi yerleştirilir. Buna benzer şekilde MS-DOS disket içeren disket sürücüyü ve üzerinde ext2 dosya sistemi bulunan ikinci IDE sabit diskin birinci bölümünü sırasıyla /mnt/disket ve /mnt/disk dizinlerine bağlamak için: # mount -t msdos /dev/fd0 /mnt/disket ve # mount -t ext2 /dev/hdb1 /mnt/disk yazılabilir. Bir mount işleminin tersini yapmak ve dosya sistemini erişilemez kılmak için umount komutu kullanılır. /disk altındaki /dev/hdb1 sabit disk bölümünü umount etmek için: # umount /disk veya # umount /dev/hdb1

# cd / # fuser /disk /disk: 78c # fuser -km /disk # umount /disk kullanılır. Her iki yazım şekli de kabul edilir. Son olarak o an sistemde bindirilmiş halde bulunan tüm dosya sistemlerini görmek için mount komutunu parametresiz yazın. Bu komut hakkında daha detaylı bilgi ve aldığı diğer parametreler için man sayfasına göz atabilirsiniz... mount ve umount komutları ile bir dizin yapısını disk üzerinde konumlandırırken veya ayırırken üzerinde işlem yapılan dizinde bulunmamanız, ya da o dizinde başka bir süreç çalışıyor olmaması gereklidir. Aksi takdirde aşağıdaki hata mesajını alırsınız: # pwd /disk # umount /disk umount: /dev/hdb1: device is busy Yapmanız gereken, ayıracağınız dizinden dışarı çıkıp tekrar denemek. Diğer bir seçenek de fuser komutunu kullanmak. Bu komut, ayırmak istediğiniz dizini kullanan tüm süreçleri ekranda gösterir. Böylelikle rahatlıkla yukarıdaki örnekteki gibi umount işlemini gerçekleştirebilirsiniz. fuser komutunun -km seçeneğiyle o dizini kullanan süreçleri öldürebilirsiniz. fuser komutunu kullanırken dikkatli olun, zira sistemi kilitlenme noktasına getirebilirsiniz. Bir dosya sistemi kullanılmadan önce mutlaka bağlanmalıdır. Daha sonra işletim sistemi her şeyin doğru bir şekilde çalıştığından emin olmak için çeşitli kontrol işlemleri yapar. Linux/Unix altında bütün dosya sistemleri tek bir dizin ağacı altında gözüktüğü için, işletim sistemi yeni bağlanan dosya sistemlerini eskiden bağlanmış dizinleriymiş gibi gösterir ve bu şekilde işlem yapar. Aşağıda şekil 2.1'de kendi kök dizinleri altında bulunan birbirinden bağımsız üç dosya sistemi gösterilmektedir. Son iki dosya sistemi sırayla, birincinin /home ve /usr dizinleri altına bağlanırsa şekil 2.2.'deki gibi tek bir dizin ağacı elde ederiz. Şekil 2.1. Üç ayrı dosya sistemi:

Şekil 2.2. /home ve /usr bağlı: Aşağıdaki örnekte gösterildiği şekilde bu bağlama işlemleri yapılabilir. # mount /dev/hda2 /home # mount /dev/hda3 /usr mount komutu iki argüman alır. Birincisi diske uygun bir aygıt dosyası veya dosya sistemini içeren bir disk bölümüdür. İkincisi ise bağlandığı dizindir. Bu işlemler yapıldıktan sonra bu iki aygıtın içerikleri sanki disk üzerindeki /home ve /usr dizinlerinin içerikleriymiş gibi kullanılabilirler. Şayet bağlama işlemi başka bir dizin altına yapılmış olsaydı, aygıtların içeriklerini görebilmek için o dizinlerin altına bakmamız gerekecekti. Ayrıca aygıt dosyası ve bağlanılan dizin arasındaki farkı mutlaka göz önünde bulundurmalıyız. Unutmayın ki aygıt dosyası, (/dev/hda2) disk in ham içeriğini verir. Bağlandığı dizin ise (/home) disk üzerindeki dosyalara ulaşım imkanı verir. Disk bölümünün bağlandığı dizine bağlama noktası adı verilir. Linux pek çok dosya sistemini destekler. mount dosya sisteminin türünü tahmin etmeye çalışır. İsterseniz -t fstype seçeneğini dosya sisteminin türünü belirtmek için kullanabiliriz. Bazı zamanlar bu gerekli olmaktadır, mount komutu dosya sistemini tanımlayamayabilir. Örneğin bir MS DOS disketini bağlamak için şu komut kullanılır: # mount -t msdos /dev/fd0 /floppy Bağlantı dizini mutlaka sistemde var olmalı ve içi boş olmalıdır. İçerisinde her hangi bir dosya bulunursa bağlama işlemi sonucunda ulaşılamaz hale gelir (hali hazırda açılmış dosyalar ve başka bir dizinden sabit bağ verilmiş olan dosyalar hala ulaşılabilir durumdadırlar). Örneğin; bazı kişiler /tmp ve /var/tmp dizinlerini eş anlamlı olarak kullanırlar ve /tmp dizinini /var/tmp dizinine sembolik bağ olarak atarlar. Sistem açılırken, /tmp dosya sistemi bağlanmadan önce kök dosya sisteminde bulunan /var/tmp dizini onun yerine kullanılır. /var dizini bağlandığı zaman, bu kök dosya sistemi altındaki /var/tmp dizinini ulaşılmaz kılar. Şayet /var/tmp dizini kök dosya sistemde yok ise, /var dizinini bağlamadan geçici dosyaları kullanmak imkansız olacaktır. Dosya sistemine herhangi birşey yazmaya niyetiniz yok ise bağlama işlemi sırasında bu bağlantının salt okunur olmasını sağlayacak -r seçeneğini kullanabilirsiniz. Bu çekirdeğin her hangi bir yazım girişiminde bulunmasını ve dosya düğümleri içindeki erişim zamanlarının güncellenmesini engeller. Üzerine yazılamayan ortamları (örn; CDROM) bağlarken bu seçenek gereklidir.

Dikkatli bakıldığında küçük bir mantıksal problem fark edilecektir. Birinci dosya sistemi (burada kök dosya sistemi oluyor) nasıl bağlanmıştır? Kök dosya sistemi açılış esnasında sihirli bir şekilde bağlanmıştır ve kullanıcı bunun her açılışta tekrar olacağına güvenmelidir. Şayet kök dosya sistemi bağlanmazsa açılış yapılamaz. Sihirli bir biçimde kök dosya sistemini bağlayan dosya sisteminin adı çekirdek içinde derlenmiştir veya LILO ya da rdev kullanılarak ayarlanmıştır. Kök dosya sistemi ilk olarak salt okunabilir şekilde bağlanır. Daha sonra başlayan betikler onun geçerliliğini kanıtlamak için fsck programını çalıştırırlar. Şayet bir problem çıkmaz ise oku-yaz olarak tekrar bağlanır. Böylece yazma işlemlerine olanak sağlanır. fsck, oku-yaz bağlı bir dosya sistemi üzerinde yapılmamalıdır. Çünkü dosya sisteminde meydana gelen her değişiklik fsck programını etkileyecek ve çalışması esnasında sorunlar ortaya çıkmasına sebep olacaktır. Kök dosya sistemi, denetlenirken salt okunur şekilde bağlanmış olduğu için fsck herhangi bir problemi sıkıntıya girmeden giderebilir. Dosya sisteminin bellekte tuttuğu bütün bilgiler yeniden bağlama işlemi esnasında silinecektir. Pek çok sistemde açılış esnasında otomatik olarak bağlanması gereken dosya sistemleri mevcuttur. Bunlar /etc/fstab dosyası içinde belirtilmişlerdir. Açılış esnasında bağlanılacak dosya sistemlerinin özellikleri çok çeşitli faktörlere dayanır ve bu sistem yöneticisinin şahsi ihtiyaç ve görüşlerine göre değişiklik gösterebilir. Bir dosya sisteminin daha fazla bağlı durumda kalması gerekmiyorsa umount komutu ile dosya sistemi sistemden ayrılmalıdır. umount argüman olarak aygıt dosyası ismini veya bağlama noktası dizininin adını kullanır. Bu işlem aşağıdaki gerçekleştirilir: # umount /dev/hda2 # umount /usr Bağlı bir disketin ayrılması zorunludur. Sakın disketi doğrudan dışarı çıkarmayın. Disk önbellekleme olayı yüzünden, gerekli bilgiler siz disketi umount komutu ile sistemden ayırana kadar diskete yazılmaz. Erken çıkarma sonucu verilerde hasar veya karışıklık meydana gelebilir. Disketten sadece okuyorsanız bu bir problem yaratmaz, fakat yazım işlemleri de yaptıysanız sonuç bir yıkım olabilir. Sadece root kullanıcı dosya istemlerini bağlayabilir ve ayırabilir. Şayet her kullanıcı istediği bir dizine bir disket bağlarsa, sonuçta /bin/sh dizini gibi görünen bir truva atı yaratmak çok kolay hale gelirdi. Bununla beraber kullanıcılara disket bağlama izni vermek kaçınılmazdır. Bunun çeşitli yolları vardır: - Kullanıcılara root parolasını vermek. En kolay fakat en az güvenli seçenektir. Ağa bağlı olmayan kişisel sistemler için en uygun çözümdür. - Kullanıcıların dosya sistemi bağlama işlemlerini yapabilmesine izin vermek için sudo gibi bir program kullanabilirsiniz. Bu hala az güvenli bir seçenektir, sadece süper kullanıcı yetkileri herkese doğrudan verilmemiş olur. - Kullanıcıları mtools kullanmaya sevk edin. Böylece MS-DOS dosya sistemlerini bağlamaya gerek kalmadan kullanabilirler. - /etc/fstab dosyası içinde bağlanması olası dizin ve aygıt dosyası adlarını uygun seçeneklerle tanımlayın.

/etc/fstab dosyası içine şu şekilde bir satır eklemek son bir alternatif olabilir: /dev/fd0 /floppy msdos user,noauto 0 0 Birinci sütundan itibaren, bağlanacak aygıt dosyası, bağlantı dizini, dosya sistemi, seçenekler, yedekleme yapma sıklığını (dump tarafından kullanılır) ve açılış esnasında hangi dosya sistemlerinin fsck tarafından denetleneceğini belirten numaralar (sıfır = birşey yapma) belirtilmiştir. noauto seçeneği açılış esnasında dosya sisteminin otomatik olarak bağlanmayacağını belirtir. user seçeneği ise bütün kullanıcılara bu dosya sistemini bağlama izni verirken güvenlik sebeplerinden dolayı, bağlanmış dizinden aygıt dosyalarının yorumlanmasına ve normal programların dahi çalıştırılmasına izin vermez. Artık herhangi bir kullanıcı msdos dosya sistemine sahip bir disketi bağlamak için aşağıdaki komutu kullanabilir: $ mount /floppy Bu disket umount komutu ile daha sonra sistemden ayrılmalıdır. Şayet çeşitli disketlere ulaşım verilmesini istiyorsanız, farklı bağlama noktaları tanımlamalısınız. msdos ve ext2 dosya sistemlerine sahip disketlere ulaşabilmek için /etc/fstab dosyasına şu satırlar eklenmelidir: /dev/fd0 /dosfloppy msdos user,noauto 0 0 /dev/fd0 /ext2floppy ext2 user,noauto 0 0 MS-DOS dosya sistemleri için, genellikle uid, gid ve umask dosya sistemi seçeneklerini kullanarak erişime sınırlamalar getirmek isteyebilirsiniz. Şayet dikkatli davranmazsanız, bağlı bir MS-DOS dosya sistemi için herkese en azından okuma izni vermiş olursunuz. Bu da pek iyi bir fikir olmayabilir. 2.2 Dosya Sistemi Bilgileri Dosya kavramı tüm bilgisayar uygulamalarında olduğu gibi bir işletim sisteminde en önemli bileşenlerden ve kavramlardan biridir. İşletim sistemi açısından bir disk, diskin bir kısmı, bir paralel port, bir web sayfasına bağlantı, bir eternet kartı hep dosya kullanmayı gerektiren birim veya işlemlerdir. Bir anlamda disk üzerindeki isimlendirilmiş bölgeler diyebileceğimiz dizinlerde bir dosya olarak kabul edilebilir. Linux, standart dosya ve dizinlerin yanında bir çok dosya tipi de tanımaktadır. Burada dosyanın tipi ile kastedilen şey dosyanın içeriği değildir. Çünkü Linux, bir dosyayı içeriği ne olursa olsun bir karakter kümesi yada byte kümesi olarak kabul eder. Bu anlamda bir gif resmi, bir ikili dosya yada başka bir dosya, Linux açısından farklılık göstermez. Dosyanın içeriğine göre yapılacak işlemler bu dosyayı kullanacak olan uygulama programına bırakılmıştır. ls -l komutunu kullandığımız zaman, erişim haklarından önceki karakterin dosyasının tipini belirlediğini biliyoruz. Şu ana kadar başlıca iki dosya tipi gördük:

a. Düzenli (regular) Dosyalar (-) b. Dizinler (directory) (d) Fakat ls -l komutu ile baktığımızda dizinlerin içeriğini listelediğinde farklı tipte dosyalar ile karşılaşacaksınız: Karakter modu dosyaları: c harfi ile belirlenirler. Bu dosyalar ya özel sistem dosyalarıdır yada seri ve paralel çevre cihazlarıdır. Blok modu dosyaları: Bu sınıfa giren dosyalar disk, disk partisyonu, disket ve cd-rom gibi ara bellek kullanan çevre cihazlarına ait dosyalardır. b harfi ile simgelenir. Linux ve Unix işletim sistemleri aygıtları iki şekilde tanırlar. Birinci rasgele erişimli blok aygıtları (diskler gibi), diğeri ise karakter aygıtlardır (seri hatlar ve teypler gibi). Sistemdeki bazı aygıtlar seri, bazıları rasgele erişimli olabilir. Her desteklenen aygıt dosya sisteminde bir aygıt dosyası ile temsil edilir. Bir aygıt dosyasına yazdığınız veya okuduğunuz zaman veriler temsil edilen aygıttan gelir ve aynı aygıta gider. Aygıtlara ulaşmak için her hangi bir özel uygulama ya da programa ihtiyaç yoktur. Yazıcıya dosya göndermek istiyorsak sadece komut vermemiz yeterli olacaktır. $ cat dosya > /dev/lp1 Tabii böyle bir durumda sistemde "dosya" adında bir dosya olmalı ve bu dosyanın içeriği yazıcının anlayabileceği bir yapıda olmalıdır. Bu komut sayesinde yazıcıdan dosya isimli dosyanın çıktısını alabiliriz. Bununla birlikte, sistem üzerinde pek çok kişi cat komutunu kullanarak yazıcıdan çıktı almaya çalışabileceği göz önünde tutularak, birisi de özel bir program kullanabilir. Bu genellikle lpr'dir. Bu program aynı anda sadece tek bir dosyanın basılacağını garanti eder ve bu dosya bittikten sonra diğerlerini otomatik olarak yazıcıya yollar. Aygıtlar sistemde dosyalar olarak gösterildiği için ls veya başka bir komut yardımı ile sistemde bulunan aygıtları (/dev dizininde ) görebiliriz. ls -l komutunun çıktısında satırın en başında aygıt türünü ve erişim izinlerini görmek mümkündür. Örneğin seri bir aygıtı inceleyecek olursak; $ ls -l /dev/ttys0 crw-rw-r-- 1 root dialout 4, 64 Aug 19 18:56 /dev/ttys0 Birinci satırın ilk karakteri, yani crw-rw-rw- harflerinin en başındaki c harfi bu aygıtın türünü bize gösterir. Bu aygıt bir karakter aygıtıdır. Normal dosyalar için ilk karakter -, dizinler için d, blok aygıtları için b, bağlantı dosyaları için ise l dir. Unutmayın ki sistemde olsun olmasın bütün aygıt dosyaları sistem içerisinde mevcuttur. Sisteminizde /dev/sda olması sizin SCSI sabit diske sahip olduğunuz anlamına gelmez. Bütün aygıt dosyalarına sahip olmak ilerde ekleyeceğiniz donanımlar için doğru parametreleri bulmak ve aygıt dosyası yapmak zahmetinden sizi kurtarır. Aynı zamanda yükleme programlarını daha basit hale getirir. Bu sayede sistemi yüklerken her donanım aygıtınız için tek tek uğraşmak zorunda kalmazsınız.

c. Sembolik linkler: Sembolik bir link fiziksel olarak mevcut olan bir dosyayı işaret edebileceği gibi bunun tersi özellikte de olabilir. Yaygın olarak kullanılan bu tür dosyaların simgesi ise l sembolüdür. Bu konuyla ilgili ayrıntılı bilgi ileride verilecektir. ç. İsimlendirilmiş borular: Bunlar shell komutlarındaki borulara benzerler farklı olan tarafı ise birer isimlerinin olmasıdır. p harfi ile temsil edilirler. d. Soketler (sockets): Tüm ağ bağlantıları için kullanılan dosya tipidir. Bu tip dosyalardan pek azının bir ismi vardır ve s harfi ile temsil edilirler. Süper Bloklar: Diskten ilk okuma yapıldığı zaman, okunan ilk yer o diske ait süper bloktur. Süper bloktaki bilgiler, disk hakkındaki en kritik bilgilerdir. Bu bilgiler, -diskin geometrisi -diskte kullanılabilecek ne kadar boş alan olduğu -ilk i-node un bulunduğu yerin adresi gibi bilgilerdir. Süper blok olmaksızın bir disk sistemini kullanmak imkansızdır. Süper blok çok önemli olduğu için bunun pek çok kopyası disk üzerinde belirli bir sistematiğe göre değişik yerlere yerleştirilmiştir. Linux ext2 sisteminde süper bloğun bir kopyası, her blok gurubunun sonunda yer alır. Bir blok gurubu veri ve i-node lar içerir ve 8192 bloktan oluşur. O nedenle süper bloğun ilk kopyası 8193. bloktadır. 3. Dosya Sistemlerinin Yönetimi Linux ta her sabit disk çeşitli kısımlara bölünebilir ve bu kısımlardan her birine bir dosya sistemi içerir. Linux ta dosya içerisinde tek bir ağaç yapısı mevcuttur ve her bir dosya bu ağaç yapısı içerisinde bir yere yerleştirilmelidir. Windows ta kök dizinin C:cihaz şeklinde belirlenmesi gibi Linux tada kök dizin kendi dosya ağacına (/) bağlanmalıdır. Ağaç yapısı tek bir dosya sistemi üzerinde genişlese de farklı dosya sistemleri ile genişlese de aynı kalacaktır. Fiziksel olarak, diskte boşluklar olduğu taktirde ağaç yapısının kritik bir kısmı bu boşluğa kaydırılabilir fakat ağacın mantıksal yapısı değişmeyecektir. Bağlama noktaları hakkında bilmemiz gereken aşağıda maddeler halinde verilmiştir: a. Bir bağlama noktası (mounting point) olarak düşünülen dizin o esnada ağaç üzerinde mevcut olmalıdır. b. Bağlama noktası olan dizin o esnada boş olmalıdır. İçinde dosya yada dizin bulunan bir dizin bağlama noktası olarak seçilirse bu durumda bu dosya ve dizinler silinmeyecek fakat yeni oluşturulan dosya sistemi içerisinde görünmez yada gizli hale geleceklerdir. Linux aynı anda 64 adet bağlanmış dosya sistemi yönetebilir.

3.1. Lokal Bağlanma ve Bağlantıyı İptal Etme Linux un en güçlü noktalarından biri, dosya yönetiminde sağladığı esnekliktir. Disk bölütleri bağlanır ki bunlar bir alt dizin gibi işlev görebilir. Sistemde çok sayıda farklı dosya sistemi bulunabilmesine rağmen kullanıcı bunu tek ve büyük bir dizin ağacı gibi algılayabilir. Bu özellikler sistem yöneticisi için büyük kolaylık sağlar. Sistem yöneticisinin bazı bölütleri çeşitli sunucular üzerinden nakletmesine rağmen bunlar, kullanıcı açısından, dizin ağacı üzerinde aynı yerde durmaya devam eder. Dosya sisteminin kullanıcının bu hareketler hakkında bilgi sahibi olması gerekmez. Dosya sistemi yönetim süreci kök dizin ile başlar. root bölütü, kernel i ve çekirdek dizin yapısını içerir. root bölütünün bağlama işlemi ön yükleme zamanında yapılır. root bölütü içerisinde tüm hizmet programları ve sistemi tek kullanıcılı mod ta çalışır hale getirmek için gerekli tüm konfigürasyon dosyaları bulunmalıdır. root bölütündeki dizinlerin pek çoğu boştur. Ön yükleme ilerledikçe diğer bölütlerde dosya sistemine eklenerek bağlanır. Bağlama işlemi bağlanan bölütün büyük bir dizin ağacına bir alt dizin olarak eklenmesi ile sürer. Örneğin, /dev/hda1 bölütü root bölütü olsun. root bölütünün /usr dizini vardır ve içinde dosya içermemektedir. /dev/hda3 bölütü ise /usr dizinin içinde bulunması gereken dosyaları içersin. Bu durumda /dev/hda3 bölütünü /usr dizinine bağlarız. Kullanıcılar şimdi /usr dizinindeki dosyaları /dev/hda3 bölütünden göreceklerdir. Fakat kullanıcının /usr nin ayrı bir bölütü olduğunu bilmesi gerek yoktur. Bir dizin bir bölüte bağlanınca dizin içerisindeki daha önce mevcut tüm dosyalar görünmez hale gelir; bunlar sistemden silinmemiştir fakat erişilebilir olmaktan çıkmıştır. Örneğin, /dev/hda3 bölütü /usr dizinine bağlanınca bu durumda /usr ın önceki içeriği okunmaz. Bu bağ ortadan kaldırılınca /usr ın önceki içeriğine erişilebilir.

Linux açılırken mount komutu yardımıyla root dosya sistemine ekleyeceği her değişik dosya sistemini /etc/fstab dosyasından okur ve işleme koyar. Aşağıda örnek bir fstab dosyası yeralıyor: /dev/hda2 / ext2 defaults 1 1 /swap none swap defaults 1 1 /dev/cdrom /cdrom iso9660 defaults 1 1 none /proc proc defaults 1 1 /dev/hda1 /dos msdos defaults 1 1 Çekirdek açılış mesajları içinde VFS: Mounted root (ext2 filesystem) readonly. gibi bir satır göreceksiniz. Sistem açılırken en önce / dosya sistemini mount eder. Bu sayede bu dosya sistemi altında yer alan ve hayati önem taşıyan yazılımlara (fsck, mount gibi) ulaşır. Daha sonra yerel dosya sistemleri ve en son da ağ üzerinden erişilen dosya sistemlerine (NFS) bağlanır. fstab dosyasında kullanıcının kendi dosyalarını yerleştiremediği, fakat sistem tarafından kullanılan swap ve proc dosya sistemleri için de mount bilgileri bulunur. Yukarıdaki fstab dosyasında ext2 dosya sistemine sahip /dev/hda2 sabit disk bölümü, / dizinini oluşturuyor. MS-DOS formatlı /dev/hda1 bölümü de /dos dizinine erişilebilir olarak açılış anında eklenecektir. Sistemdeki CD-ROM sürücü /cdrom dizini altına yerleştirilmiş olup root kullanıcı bunu istediği dizine koyabilir. Bu dosyaya, mount komutundaki gibi parametreler de eklenebilir. Dördüncü sırada yer alan defaults parametresinin yanına eklemek istediğiniz seçenekleri yazın. Bu parametrelerden sıkça kullanılan bir tanesi de "user" olup root dışındaki kullanıcılara mount hakkını verir. CD-ROM sürücüyü normal sistem kullanıcılarının mount veya umount yapabilmesi için fstab dosyasındaki ilgili satırı /dev/cdrom /cdrom iso9660 defaults, user 1 1 satırıyla değiştirin. defaults parametresi ise, hali hazırdaki dosya sistemini okunup yazılabildiğini, asenkron olduğunu, üzerindeki bilgileri bloklar halinde alıp verdiğini (buna diğer örnekler CD-ROM ve disket sürücüleridir) içerdiği programların çalıştırılabilir olduğunu ve normal kullanıcıların mount, umount yapamadığını gösterir. user parametresiyle kullanıcılara mount ve umount hakkı yukarıda verilmiştir. 3.2. Dosya Sistemi Yaratılması ve Kontrolü Bazen MS-DOS altından oluşturulamayan dosya sistemlerini (ext2 gibi) oluşturmak gerekebilir. Linux altında bir dosya sistemini oluştururken aynı zamanda bunu kontrol eden programlar vardır. Bunların en çok kullanılanı, mkfs' tir.

mkfs ile Linux native (ext2) dosya sistemi oluşturmak için mkfs.ext2 programı kullanılır. #mkfs.ext2 <aygit> <blok-sayisi> "aygıt" yerine üzerine dosya sistemi kurulacak olan cihazın /dev dizini altındaki düğüm dosyasının ismi yazılır. Blok sayısı yerine, fdisk yazılımından o bölümün kaç blok olduğunu öğrenip bu sayıyı girmelisiniz. Bir blok 1024 bayt tan oluşur. Örneğin; # mke2fs /dev/hda3 163829 komutu, /dev/hda3 disk bölümünde ext2 dosya sistemi kurar. Bu komutu kullanmadan önce iyi düşünün, zira burada yer alan tüm dosyalar silinir ve bu hatanın geri dönüşü olmaz. Aşağıdaki komut ile bir disket üzerinde ext2 dosya sistemi kuruluyor. # mke2fs /dev/fd0 1440 mke2fs ile mkfs.ext2 komutları aynıdır. Benzer şekilde, MS-DOS dosya sistemi yaratmak için mkfs.msdos, minix dosya sistemi yaratmak için mkfs.minix kullanılabilir. Blok sayısı girilmez ise mke2fs bunu otomatik olarak bulacaktır. Herhangi bir sebepten dolayı diskte bozulma ve veri kaybını en aza indirmek için de yazılımlar vardır. fsck ile dosya sistemi kontrolü yapılabilir. fsck ile ext2, dosfsck (veya fsck.msdos) ile MS-DOS formatlı alanlar kontrol edilir. # fsck /dev/hda2 Parallelizing fsck version 0.5b (14-Feb-95) e2fsck 0.5b, 14-Feb-95 for EXT2 FS 0.5a, 95/03/19 /dev/hda2 is mounted. Do you really want to continue (y/n)? yes Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information Fix summary information<y>? yes Block bitmap differences: -46486-46487 -46488-46489 -46490. FIXED Free blocks count wrong for group 5 (2803, counted=2808). FIXED Free blocks count wrong (16326, counted=16331). FIXED /dev/hda2: ***** FILE SYSTEM WAS MODIFIED ***** /dev/hda2: ***** REBOOT LINUX ***** /dev/hda2: 3494/29632 files, 42904/59235 blocks

Bir dosya sistemini kontrol etmeden önce okunan bölümü root dosya sisteminden ayırın ve kontrol işleminden sonra bilgisayarı kapatıp tekrar açın. debugfs programı, dosya sistemi parametrelerini incelemek için kullanılır. Disk üzerine doğrudan erişim yaptığı için dikkatli kullanmalısınız. ext2fs yardımıyla kurtarılamayan bazı dosyalar (özellikle silinmiş dosyalar) debugfs yardımıyla kurtarılabilir. 3.3. Bağlantılar (Link) Bazı durumlarda, bir dosyayı oluşturup bu dosyanın başka bir dosyayı işaret etmesi istenebilir. Genellikle sistem yöneticileri tarafından kullanılan sembolik bağlantı yardımıyla bir dosya veya dizin, bunlara karşılık gelen başka bir dosya veya dizin olarak gösterilir. Aşağıdaki örnekte test isimli dosyaya deneme ismi ilave olarak verilmiştir. # ls test # ln test deneme # ls test deneme Aynı isme birden fazla isim verebiliriz. # ln test calisma1 # ln test calisma2 # ls test calisma1 calisma2 Şimdiye kadar verilen örnekler hard link olarak adlandırılan linklerdi. Bu tür linklerde yaşanan bir sorun bağlanmaya çalışılan dosyanın diğer bir dosya sisteminde olması durumudur. Linux, bir dosya sistemi içinde var olan bir dosyayı diğer bir dosya sistemi içindeki dosyaya hard link yapılmasına izin vermez. Örnek olarak sizin dizininizdeki bir dosyayı arkadaşınızın dizinindeki bir dosyaya hard link yapmaya çalıştığınızda başarısızlıkla sonuçlanacaktır. Bu sorunun üstesinden gelmek için sembolik linkler kullanılır. Aşağıda bir sembolik bağlantı örneği yeralıyor. Sistem görevlisi, /root dizini altındayken /usr/src/linux dizinine geçmek istiyor. /usr/src/linux dizinine işaret eden bir bağlantı kurmak için ln komutu kullanılır. -s parametresi, bu bağlantının sembolik olacağına işaret eder. ln -s <nereye baglanti yapilacak> <hangi isimle yapilacak> # ls -l total 116 drwxr-xr-x 2 root root 1024 Feb 14 08:13 kernel -rw-r--r-- 1 root root 115695 Sep 15 1994 lodlin15.zip drwx------ 2 root root 1024 Jan 7 1980 mail -rw-r--r-- 1 root root 0 Feb 15 08:14 typescript

# ln -s /usr/src/linux linux # ls -l total 116 drwxr-xr-x 2 root root 1024 Feb 14 08:13 kernel -rw-r--r-- 1 root root 115695 Sep 15 1994 lodlin15.zip drwx------ 2 root root 1024 Jan 7 1980 mail lrwxrwxrwx 1 root root 9 Feb 15 08:14 linux -> usr/src/linux -rw-r--r-- 1 root root 0 Feb 15 08:14 typescript Bu işlemden sonra kullanıcının /usr/src/linux dizinine geçmesi için sadece cd linux yazması yetecektir. Sembolik bağlantı dosyasını diğerlerinden ayıran, satırın en solundaki l karakteridir. Bir başka örneğe bakalım: $pwd /home/xx/orl $touch y (burada dosya oluşturuluyor) $ ls -il y 32051 -rw-rw-r- 1 xx xx 0 Jan 11 09:35 y ls komutundaki -i opsiyonu, inode sayısının basılmasını sağlar bu sayı çıkıştaki ilk sayıdır. y dosyası oluşturmadan önce dizinde başka dosya yoktu. Çıkıştaki 3. alan ise dosyanın link sayacıdır ve değeri bir olarak görülmektedir. $touch y Komutu iki ayrı eyleme ayrılabilir: a. i-node sayısının otomatik olarak oluşturulması; yukarıda 32051 b. Bu inode sayısına bir ilink oluşturulması. Bu link /home/xx/orl/y, 32051 inode sayısını işaret eden bir linktir, ve şu anda sadece bir tane link mevcut olduğu için link sayacının değeri de bire eşittir. Bu durumda iken aşağıdakileri girelim; $ ln y z $ ls -il y z 32051 -rw-rw-r- 2 xx xx 0 Jan 15 09:56 y 32051 -rw-rw-r- 2 xx xx 0 Jan 15 09:56 z Böylece aynı inode için başka bir link oluşturduk. z adı başka bir dosya değil, sadece 32051 inode sayısını işaret eden başka bir link oluşturulmuştur. ls -l komutunu girerseniz şimdi link sayacının 2 yi gösterdiğini göreceksiniz çünkü ikinci bir link eklenmiştir.

Şimdi aşağıdaki komutları girelim: $ rm y $ ls -il z 32051 -rw-rw-r-- 1 xx xx 0 Jan 15 09:36 z Şimdi orjinal dosya silinmesine rağmen inode sayısı kalmaya devam etmektedir. Fakat şu anda mevcut tek link /home/xx/orl/z linkidir. Bir inode, herhangi bir dizin içinde en az bir kere bir isim tarafından çağrılmış ise, link li hale gelir. Dizinler de inode lar içinde saklanır fakat dizinlerin link sayıları diğer dosya tiplerinden farklı olarak sahip oldukları alt dizin sayısına eşittir. Her dizin başına en az iki link mevcuttur. Dizinin kendisi (.), dizinin ebeveyni olan dizin (..) Linklenmemiş tipik örnek ağ bağlantılardır (isimsiz dosyalar). Örneğin www.itu.edu.tr gibi bir bağlantı ile ilişkili olan bir dosyayı dosya ağacında göremezsiniz. Benzer olarak kabuk içinde bir boru (pipe) kullandığımız taktirde, boru ile ilişkili bir dosyanın mevcut olduğunu fakat bir link oluşturulmadığını gözleyebilirsiniz. i-node kavramı: Linux default dosya sistemi olan ext2 dosya sisteminde ve pek çok UNIX sisteminde temel yapı bloğu i-node (i-düğümü) dür. Bir i-node, başka i-node lara yada veri bloklarına işaret eden göstericileri (pointer) taşır. Bir i-node içerisindeki kontrol bilgileri, - Dosyanın sahibi - Dosya üzerindeki izinler - Dosyanın boyutu - Dosyaya en son erişilen zaman - Dosyanın ilk oluşturulduğu zaman - Dosyanın grup aidiyeti gibi bilgilerden oluşur. i-node için ayrıntılı veri yapısını görmek için, /usr/src/linux/include/linux/ext2_fs.h dosyasına bakmalısınız. Dizinlerin dosyaların özel bir biçimi olduğunu daha önce belirttik. Her dizin bir i-node a sahiptir. Bu i-node içinde dizin içindeki dosyalara ait bilgilerin bulunduğu veri bloklarını işaret eden göstericiler bulunur. Dosyalara ait bilgiler ise, dosya adı ve dosyaya ait i-node bilgisidir. 4- Dosya Arşivleme ve Sıkıştırma Linux altında dosya arşivlenmesi ve sıkıştırılması neredeyse belirli ve standartlaşmış birkaç komut ile gerçekleştirilir. tar komutu yardımıyla istenilen dosyaları arşivleyebilir, bunların üzerine yenilerini ekleyebilir, istediğiniz zaman da tekrar açıp eski haline getirebilirsiniz. GNU gzip komutu ise dosyaların sıkıştırılması (zip) ve sıkıştırılmış dosyaların açılması (gunzip) işlemlerini yapabilir. Fazla disk alanınız yoksa bu iki komut her zaman yardımınıza koşacaktır.

Ayrıca: - compress veya uncompress : bir dosyanın sıkıştırılması veya açılması için kullanılır. - zcat : sıkıştırılmış bir dosyayı açar ve dosyayı değiştirmeksizin ekrana çıktısını yollar. - ip veya unzip : Dosyaları paketler ve sıkıştırır ve açar. - cpio : Bir arşiv dosyasından veya bir teyp aygıtından dosyaları açar ve kopyalar. 4.1 Dosya Arşivleme tar (Tape Archive) programı, bir veya birden fazla dosyayı tek bir forma sokar. Genellikle bir dizin ve bu dizinin altında yer alan tüm alt dizinleri biraraya getirmek için kullanılır. tar, dosyaların üzerinde sıkıştırma işlemini normalde uygulamaz. Fakat tar'ın GNU sürümü (Linux'ta da kullanılan) bu işlemi gzip kullanmadan da yapabilir. tar komutuna bir örnek verelim : $ tar fonksiyon(lar) arşiv_dosyası dosya_isim(leri) $ tar cf arsiv.tar tmp/ Bu komut, -c (create archive) parametresi yardımıyla tmp dizini altındaki herşeyi paketleyip arsiv.tar isimli dosyaya yollar. -f parametresi, hangi dosyaya yazılacağını belirtir. İstediğiniz zaman dosyayı tekrar açmak isterseniz: $ tar xf arsiv.tar komutunu kullanın. -x (extract) parametresi, -f ile belirtilen dosyayı açacaktır. -r seçeneği ile daha önce yaratılmış bir arşive dosya eklenebilir. Böylece dosyayı açma ve tekrar arşiv oluşturma işleminden kurtulmuş olursunuz. $ tar rf arsiv.tar ekleme.txt Dosyanın içeriğini önceden görebilmek için -t parametresini kullanın ve bu işlemi de alışkanlık haline getirin. Bazı durumlarda arşivlenmiş yazılım, kendine ait bir dizin açmak yerine içerdiği dosyaları bulunduğu yere yazabilir. $ tar tf arsiv.tar Hangi dosyaların açıldığını ekranda görebilmek için -v parametresini ekleyin: # tar zcvf tmp.tgz /tmp tar: Removing leading / from absolute path names in the archive. tmp/ tmp/tar-error tmp/.x11-unix/ tmp/rc.inet1.old tmp/networks.old

tmp/linux/ tmp/linux/fss.txt tmp/lilo.conf tmp/pkgtool.removed Buradaki parametrelerden z ile ilgili daha sonra bilgi verilecektir. Aşağıdaki komut ise arşivlenen dosyaları diskete kaydetmeye yarar. Bunun için temiz bir disketi yuvasına yerleştirin ve aşağıdaki satırı yazın. # tar cf /dev/fd0 tmp/ tmp dizini altındaki herşeyi diskete kaydetmiş olduk. Açmak için bilinen yöntemi kullanırız: # tar xf /dev/fd0 4.2 Dosya Sıkıştırma ve Açma Dosya sıkıştırma amacıyla sıkça kullanan iki yazılım vardır: gzip ve compress. GNU'nun dağıtımı olan gzip, tar ile birlikte kullanılan ve dosya sıkıştırma ve arşivlemede neredeyse standart haline gelmiş bir programdır. Bir dosyayı sıkıştırmak için parametre girmeden gzip komutunun ardından dosya ismini yazın. $ gzip elvis $ ls -al elvis.gz gzip ile sıkıştırılmış dosyaların sonu.gz ile biter. Bunları açmak için gunzip komutunu kullanın: $ gunzip elvis.gz compress ve uncompress de sırayla bir dosyayı sıkıştırmak ve açmak için kullanılır. Aslında Linux'ta uncompress adında bir yazılım yoktur, bu dosya ismi compress dosyasına bağlantılıdır. compress ile sıkıştırılan dosyaların sonu.z ile biter: $ ls -al web.html -rw-r--r-- 1 mehmet users 41450 Jan 27 13:40 web.html $ compress web.html $ ls -al web.html.z -rw-r--r-- 1 mehmet users 18906 Jan 27 13:40 web.html.z

Yukarıdaki web.html dosyasını sıkıştırdığımızda dosyanın boyutu 41450 bayttan 18906 bayta indi. Açmak için: $ uncompress web.html.z Bir dosyanın uzantısından ne tür bir dosya olduğunu anlayamazsanız file komutu imdadınıza koşar. Linux'ta belirli uzantılı dosyaların başı bilinen bir harf veya harf grubu ile başlar. file komutu dosyanın başındaki karakterleri kontrol ederek ve bunları bir listeyle (/etc/magic) karşılaştırarak dosyanın ne tür olduğunu söyler: # file tmp.gz tmp.tgz: gzip compressed data - deflate method, last modified: Sat Feb 15 08:21:50 1997 os: Unix # file tmp.tar.z tmp.tar.z: compressed data 16 bits 4.3. tar ve gzip Komutlarının Birlikte Kullanımı ftp adreslerinde Linux için yer alan yazılımlar genellikle tar ve gzip, nadiren de tar ve compress ile sıkıştırılıp arşivelenerek saklanırlar. Çünkü tar komutu tek başına arşivi sıkıştırmaz, bu işlem için gzip veya compress kullanılır. Bunların açılabilmesi için tar komutuna eklenecek birkaç parametre yeterli olur: $ ls netscape-4.0.linux-elf.tar.gz Yukarıdaki dosya önce tar ile arşivlenmiş, ardından gzip ile sıkıştırılmış. Tek adımda bu iki dosyayı açmak için tar dosyasına x ve f parametrelerinin dışında z parametresini de ekleyin: $ tar zxf netscape-4.0.linux-elf.tar.gz $ ls netscape-4.0.linux-elf Eğer dosya sıkıştırılırken compress komutu kullanılmışsa z yerine Z parametresini yazın. $ ls folder.tar.z $ tar Zxf folder.tar.z $ ls folder

Benzer şekile, bir dosyayı aynı anda hem tar ile arşivlemek, hem de sıkıştırmak istersek c ve f parametreleri dışında compress ile Z, gzip ile z parametrelerini girmek yeterlidir. Aşağıda sırayla gn-gopher dizisinin önce tar ve gzip ile, ardından tar ve compress ile arşivlenmesi görülüyor. $ ls gn-gopher/ $ tar zcf gopher.tgz gn-gopher/ $ tar Zcf gopher.tar.z gn-gopher/ NOT: İTÜ Bilişim Enstitüsü, Bilişim Ana Bilim Dalı Öğretim Üyesi Dr. M. Serdar ÇELEBİ nin EST 513B ders notlarından alınmıştır.