Linux
Dosya ve Dizin işlemleri
Tipki MS-DOS’ta oldugu gibi Linux dosya yapisinin da hiyerarsik bir yapiya sahip oldugu daha önce belirtilmisti. Temel dosya bilgisi önceki konularda anlatildiginda burada sadece dosya ve dizinlerle ilgili özelliklere deginilecektir. Erisim
Haklari •
Okuma Izni : Dosyanin okuma izni varsa içerigi görülebilir, dizinin
okuma izni varsa içerdigi dosyalarin listesi alinabilir. Bir dosya veya dizin ilk yaratildiginda
Linux tarafindan ön tanimli bazi izinler verilir. Genellikle bu izin
çalistirma ve okumadir. Dosyanin olusma aninda verilen izni degistirmek
için erisim yetki kalibi olarak da bilinen umask komutu kullanilir. Dosya
Izinlerinin Degistirilmesi Asagidaki dosya üzerindeki erisim
haklarina göz atalim: Dosya bilgisinin an sol kisminda izin haklari yer alir. En bastaki “-“ isreti bunun düz dosya oldugunu belirtir. “gorkem”, dosyasinin sahibi; “users” ise grubudur. Ardindan sirayla uzunluk, son degistirilme tarihi ve dosya ismi gibi bilgiler gelir. Son harf kümesine dosyanin modu da denir. Solda yer alan r,w ve x karakterleri sirayla okuma, çalistirma ve yazma haklarini belirtir. En soldaki “-“ isaretini ayirdiginiz zaman geri kalan harfleri üçlü grup haline getirdigimizde; rwx r-x r-x sirayla birinci harf kümesi dosya
sahiplerinin izinlerini, ikinci harf kümesi grup izinleri ve son
küme de diger kullanicilarin izinlerini belirtir. Buna göre
yukaridaki dosyada Sol bastaki karakter “d” olsaydi, bir dizini inceliyor olacaktik. Dosyanin izinlerini degistirmek için chmod komutu kullanilir. Bu komutu kullanirken hangi izin düzeyine (kullanici, grup veya digerleri) hangi izinlerin verilecegi veya kaldirilacagi yazilir.
$ chmod -r deneme sadece grubun, sadece kullanicinin veya sadece digerlerinin erisim hakkini degistirebilmek için her izin düzeyi için bir harf tanimlanmistir. Kullanici adi için “u”, grup için “g” ve digerleri için “o” yazarak belirli bir izin düzeyi için erisim hakkini degistirmek mümkün olur. Bu üç harf, izinden hemen önce yazilir. $ chmod u+x deneme (dosyanin sahibi
çalistirabilir) Her izin için ayni zamanda izinler tanimlanmistir. Dosyanin erisim izinlerini degistirmek için izne ait sayilari kullanabiliriz. Asagidaki tabloda, her izin düzeyi (dosyanin sahibi, grubu ve digerleri) için üçer tane olmak üzere toplam 9 sayidan olusan izin numaralarini görebilirsiniz. Bir izni vermek için sirayla numaralari toplayin. örnegim sahibin okumasi (400), yazmasi (200), çalistirmasi (100), grubun okumasi (40), çalistirmasi (10) ve digerlerinin okumasi (4) ve çalistirmasi (1) için kullanilan rakamlarin toplami 755’tir. $ chmod 755 deneme 400 sahibi okur 040 grubu okur 004 digerleri okur Baska bir örnekte; sahibinin okumasi (400), yazmasi (100), grubun okumasi (40), digerlerinin okumasi (4) için izin numarasini bulmak için bu cümlede parantez içinde yer alan sayilari toplarsak 644 yapacaktir. $ chmod 644 deneme Aynen dosyalarda oldugu gibi, bir dizinin de sahibi ve grubu vardir. Dosyanin
Sahibinin ve Grubunun Degistirilmesi Yukaridaki dosyanin sahibi ozgur isimli kullanici ise; # chown ozgur deneme Dosyanin yeni hali söyle olur: # chgrp www deneme $ chown ozgur.www denem Diger
Dosya Sistemlerinin Kullanilmasi Linux’ ta her dosya sistemi farkli bir dizinde tutulur ve bu dizinlerin bilgisi /etc/fstab dosyasinda yer alir. Açilis aninda bu dosyada hangi dosya sistemlerinin hangi dizinler altina yerlestirilecegi okunur ve buna göre makine açilir. Linux kendisi için özel olarak gelistirilen ext2 dosya sistemini kullanir. Bir sistem görevlisi olarak çesitli dosya sistemlerini tanimali, bu dosya sistemleri üzerinde hata olusmasi durumunda zarari en aza indirecek yolu bilmelisiniz. Bilgisayar basinda geçireceginiz zamaninizin büyük bir bölümünü dosya sistemleri üzerinde harcayacaksiniz. Mount Islemi Bir dosya sisteminin kullanilabilmesi için bos bir dizin altina yerlestirilmesi gerekir. Ancak bu gerçeklesirse söz konusu dosya sistemini olusturan dosyalar üzerinde islem yapilabilir. Bu islem mount komutu yardimiyla yapilir. Mount komutu su sekilde kullanilir: Mount -t<tip><nereye><aygit> Tip: Dosya sitemi çesidi. örnek dosya sistem çesitleri arasinda ext2, minix, msdos sayilabilir. Genellikle mount programi ne tür bir diske eristigini otomatik olarak anlayacaktir. Nereye: mount edilecek dosya sisteminin hangi dizinin altina yerlestirilecegini belirtir. Aygit: üzerinde dosya sisteminin
bulundugu sabit disk CD-ROM benzeri aygit. Bir dosya sistemini erisilebilir hale getirebilmek için hangi dügüm ismine sahip oldugunu bilmemiz gerekir. örnek olarak CD-ROM için /dev/cdrom, birinci disket sürücü için /dev/fd0 gibi. CD-Rom sürücüsünü /mnt altina mount etmek için # mount -t iso9660 /dev/cdrom/mnt # mount -t msdos /dev/fd0/mnt/disket yazilabilir. Bir mount isleminin tersini yapmak ve dosya sistemini erisilmez kilmak için umount komutu kullanilir. /disk altindaki /dev/hdb1 sabit disk bölümünü umount etmek için # umount /disk kullanilir. Her iki yazim sekli de kabul
edilir. Son olarak o an sistemde bindirilmis halde bulunan tüm dosya
sistemlerini görmek için mount komutunu parametresiz yazalim. Aksi takdirde asagidaki hata mesaji alinir: #pwd Yapilmasi gereken, ayirilacak dizinden
disari çikip tekrar denemek. Diger bir seçenek de fuser
konutunu kullnamak. Bu komut, ayirmak istediginiz dizini kullanana tüm
süreçleri ekranda gösterir. Böylelikle rahatlikla
yukaridaki örnekteki gibi umount islemi gerçeklestirebilir.
fuser komutunun -km seçenegi ile o dizini kullanan süreçleri
öldürelebilir. #fuser/disk fuser komutunu kullanirken dikkatli olama gerekir, zira sistemi kilitleme noktasina getirebilir. Dosya Sistemi Bilgileri Linux açilirken mount komutu yardimiyla root dosya sistemine akleyecegi her degisik dosya sistemini /etc/fstab dosyasindan okur veislem koyar. Asagida örnek bir fstab dosyasi yer aliyor. /dev/hda2 / ext2 defaults 1 1 çekirdek açilis mesajlari içinde VFS: Mounted root (ext2 filesystem) readonly. Gibi bir satir göreceksiniz. Sistem açilirken en önce /dosya sistemini mount eder. Bu sayede bu dosya sistemi altinda yer alan ve hayati önem tasiyan yazilimlara(fsck, mount gibi) ulasir. Daha sonra yerel dosya sistemleri ve en son da ag üzerinden erisilen dosya sistemlerine (NFS) baglanir. fstab dosyasinda kullanicinin kendi dosyalarini yerlestirmedigi, fakat sistem tarafindan kullanilan swap ve proc dosya sistemleri için de mount bilgileri bulunur. Yukaridaki fstab dosyasinda ext2 dosya sistemine sahip /dev/hda2 sabit disk bölümü, / dizinini olusturuyor. MS-DOS formatli /dev/hda1 bölümü de /dos dizinine erisilebilir olarak açilil aninda eklenecektir. Sistemdeki CD-Rom sürücü
/cdrom dizinini altina yerlestirilmis olup root kullanici bunu istedigi
dizine koyabilir. Bu dosyaya, mount komutundaki gibi parametreler de eklenebilir.
dördüncü sirada yer alan defaults parametresini yanina
eklemek istedigimiz opsiyonlari yazariz. Bu parametrelerden bir tanesi
de “user” olup root disindaki kullanicilara mount hakkini
verir. CD-ROM sürücüyü normal sistem kullanicilarinin
mount veya umount yapabilmesi için fstab dosyasindaki ilgili satiri satiriyla degistirdigimizde; defaults parametresi ise, halihazirdaki doya sistemini okunup yazilabildigini, asenkron oldugunu, üzerindeki bilgileri bloklar halinde alip verdigini (buna diger örnekler CD-ROM ve disket sürücüleridir), içerdigi programlarin çalistirilabilir oldugunu ve normal kullanicilarin mount, umount yapamadigini gösterir. Dosya Sistemi Desteginin Eklenmesi çekirdek tarafindan hangi dosya sistemlerinin desteklendigi /proc/filesystems dosyasindan ögrenilebilir. Diger modüller gibi dosya sistemlerinin hemen hemen tamami çekirdege disaridan eklenen modüllerden olusur. $ cat /proc/filesystems yukaridaki satirlar, çekirdekte ext2, vfat, proc, iso9660 ve smbfs dosya sistemi destegi oldugunu gösteriyor. Linux’de tüm modüller
/lib/modules/preferred dizini altinda yer alir. Bu dizine geçin. block: Blok aygitlara iliskin modüller normalde pek çok modül sizin
isteyiniz disinda çekirdege eklenir ve çikartilir. Bizim
isimize yarayacak modüller fs dizini altindadir.
Bazen MS-DOS altinda olusturulamayan
dosya sistemlerini (ext2 gibi) olusturmak gerekebilir. Linux altinda bir
dosya sistemini olustururken ayni zamanda bunu kontrol eden programlar
vardir. Bunlarin en çok kullanilani, Slackware sürümünde
gelen mkfs/’tir. # mke2fs/dev/hda3 163829 komutu, /dev/hda3 disk bölümünde ext2 dosya sistemini kurar. Bu komutu kullanmadan önce iyi düsünülmelidir, zira burada yer alan tüm dosyalar silinir ve bu hatanin geri dönüsü olmaz. Asagidaki komut ile ibr disket üzerinde ext2 dosya sistemi kuruluyor. # mke2fs/dev/fd0 1440 mke2fs ile mkfs.ext2 komutlari aynidir. Benzer sekilde, MS-DOS dosya sistemi yaratmak için mkfs.msdos, minix dosya sistemi yaratmak için mkfs.minix kullanilabilir. Blok sayisi girilmez ise mke2fs bunu otomatik olarak bulacaktir. Herhangi bir sebepten dolayi diskte bozulma ve veri kaybini aza indirmek için de yazilimlar vardir. Fsck ile dosya sistemi kontrolü yapilabilir. Fsck ile ext2, dosfsck (veya fsck.msdos) ile MS-DOS formatli alanlar kontrol edilir. Linux:?# fsck /dev/hda2 Pass1: checking inodes, blocks and sizes Block bitmap differences:-46486 -46487
-46489 -46490. FIXED /dev/hda2: ***** FILE SYSTEM QWAS MODIFIED
***** Bir dosya sistemini kontrol etmeden önce okunan bölüm root dosya sisteminden ayrilir ve kontrol isleminden sonra kapatilip tekrar açilir. Debugfs programi, dosya sistemi parametrelerini incelemek için kullanilir. Disk üzerine dogrudan erisim yaptigi için dikkatli kullanilmalidir. Ext2fs yardimiyla kurtarilamayan bazi dosyalar (özellikle silinmis dosyalar) debugfs yardimiyla kurtarilabilir. Sembolik Baglantilar Bazi durumlarda, bir dosyayi olusturup bu dosyanin baska bir dosyayi isaret etmesi istenebilir. Genellikle sistem yöneticileri tarafindan kullanilan sembolik baglanti yardimiyla bir dosya veya dizin, bunlara karsilik gelen baska bir dosya veya dizin olarak gösterilir. Asagida sembolik baglanti örnegi yer aliyor. Sistem görevlisi, /root dizini altindayken /usr/scr/linux dizinine geçmek istiyor. /usr/scr/linux dizinine isaret eden bir baglanti kurmak için ln komutu kullanilir. -s parametresi, bu baglantinin sembolik olacagina isaret eder. ln-s<nereye-baglanti-yapilacak><hangi-isimle-yapilacak> Bu islemden sonra kullanicinin /usr/scr/linux dizinine geçmesi için cd linux” yazmasi yetecektir. Sembolik baglanti dosyasini digerlerinden ayiran, satirin en solundaki l karakteridir. Sabit Baglantilar Eger –s parametresini kullanmazsaniz,
ln komutu iki dosya arasinda sabit baglanti (hard link) koyacaktir. -rw-r—r- 2 root root 390 Mar 17
20:15 /etc/group /etc/group dosyasi üzerinde yapilacak tüm degisiklikler /etc/group2 dosyasinada aninda yansitilir. Sabit baglantilari sistem yöneticileri genelde önemli sistem dosyalarinin (/etc/paswd, /etc/shadow vb.) bir kopyasini tutmak için kullanir. Dosya Arsivleme ve Sikistirma Linux altinda dosya arsivlenmesi ve sikistirilmasi neredeyse belirli ve standartlasmis birkaç komut ile gerçeklestirilir. tar komutu yardimiyla istenilen dosyalar arsivlenebilir, bunlarin üzerine yenileri eklenebilir, istenildigi zaman da tekrar açip eski haline getirilebilir. GNU gzip komutu ise dosyalarin sikistirilmasi (zip) ve sikistirilmis dosyalarin açilmasi (unzip) islemlerini yapabiliyor. Fazla disk alani yoksa bu iki komut her zaman ise yarayacaktir. Dosya Arsivleme Tar (tape Archive) programi, bir veya
birden fazla dosyayi tek bir forma sokar. Genellikle bir dizin ve bu dizinin
altinda yer alan tüm alt dizinleri bir araya getirmek için
kullanilir tar, dosyalarinin üzerinde sikistirma islemini normalde
uygulayamaz. Fakat tar’in GNU sürümü (Linux’ta
kullanilan) bu islemi gzip kullanmadan da yapabilir. $ tar -cf arsiv.tar tmp/ bu komut, -c (create archive) parametresi
yardimiyla tmp dizini altindaki herseyi pakatleyip arsiv.tar ismli dosyaya
yollar. -f parametresi, hangi dosyaya yazilacagini belirtir. Istenldigi
zaman dosyayi tekrar açmak istendiginde: dosyanin içerigini önceden
görebilmek için -t parametresi kullanilir. Bazi durumlarda
arsivlenmis yazilim kendine ait bir dizin açmak yerine içerdigi
dosyalari bulundugu yere yazabilir. Hangi dosyalarin açildigini ekranda görebilmek için -v parametresi eklenir: #tar-zcvf tmp.tgz/tmp asagidaks komut, arsivlenen dosyalari
diske kaydetmaye yariyor. Bunun için temiz bir disket yuvasina
yerlestirilir ve asagidaki satir yazilir. tmp dizini altindaki her sey diskete
kaydedilmistir. Açmak için bilinen yöntem kullanilir. Dosya Sikistirma ve Açma Dosya sikistirma amaciyla sikça kullanilan iki yazilim vardir: gzip ve compress. Her iki yazilimda da Slackware Linux dagitiminda bulunmaktadir. GNU’nun dagitimi olan gzip, tar ile birlikte kullanilan ve dosya sikistirma ve arsivlemede neredeyse standart hale gelmis bir program. Bir dosyayi sikistirmak için parametre girmeden gzip komutunun ardindan bir dosya ismi yazildiginda; $ gzip alvis gzip ile sikistirma dosyalarinin sonu
.gz ile biter. Bunlari açmak için gunzip komutu kullanilir compress ve unsompress de sirayla bir dosyayi sikistirmak ve açmak için kullanilir. Aslinda Linux’ta uncompress adinda bir yazilim yoktur, bu dosya ismi compress dosyasina baglantilidir compress il sikistirilan dosyalarin sonu .Z ile biter. $ ls-al web.html yukaridaki web.html dosyasini sikistirdigimizda
dosyanin boyutu 42450 Bir dosyanin uzantisindan ne tür bir dosya oldugu anlasilamaz ise file komutu yardima kosar. Linux’ta belirli uzantili dosyalarin basi bilinen bir harf veya harf grubu ile baslar. File komutu dosyanin basindaki karakterleri kontrol ederek ve bulari bir listeyle(/etc/magic) karsilastirarak dosyanin ne tür oldugunu söyler. #file tmp.gz Dosya Türleri .Z Sikistirilmis dosya (compress ile) Birlikte Kullanim ftp adreslerimde Linux için yer
alan yazimlar genellikle tar ve gzip, nadiren de ta ve compress ile sikistirilip
arsivlenerek saklanirlar. çünkü ta komutu tek basina
arsivi skikstirmaz, bu islem için gzip veya compres kullanilir.
Bunlarin açilabilmesi için tar komutu ve birkaç parametre
yeterli olur. yukaridaki dosya önce tar ile arsivlenmis,
ardindan gzip ile sikistrilmis. Tek adimda bu iki dosyayi açmak
için tar dosyasina x ve f parametrelerinin disinda z parametresi
de eklenir. eger dosya sikistirilirken compress komutu kullanilmissa z yerine Z parametresi yazilir. $ ls benzer sekilde, bir dosyayi ayni anda hem tar ile arsivlemek, hem de sikisrtirmak istersek c ve f parametreleri disinda compress ile Z, gzip ile z parametrelerini girmek yeterlidir. Asagida sirayla gn-gopher dizisinin önce tar ve gzip ile,, ardindan tar ve compress ile arsivlenmesi görülüyor. $ ls Dizin Tarama Linux isletim sistemi kuruldugu anda, yünlerce dizin altinda binlerce dosya olacaktir. Find komutu, bu dosyalarin arasinda tarama yapabilmek için gelistirlmistir. Bu komutla sadece dosya sistemlerine degil, dosyanin sahibi, eriim haklai, son erisim tarihi gibi verilere de ulasmak mümkündür. Find komutunun en ik kullanilils sekli sudur: Find<dizin-ismi>-name<ne-aratiliyor> Dizin ismi yerine tarancak olna dosyanin
bulundugu dizin ismi yazilir. -name parametresinden sonra ise aranana
dosyanin ismi girilir. Burada “*” ve “ Asagida, find komutunun kullanimina iliskin birkaç örnek yer aliyor. $ find .-name “*.html” find komutuna bir alternatif olan locate komutu ile dosyalar çok kisa bir sürede taranabilir. Update koutu, her sabah belirli bir saatteki tüm dosya ve dizin isimlerini bir veri tabanina yükler. Daha sonra bu dosyada yer alan belirli bir dosya veya dizin ismi ile arayabilirsiniz: # locate pico Yukaridaki komut ile içinde pico kelimesi geçen dosyalar bulunur. mtools
MSDOS Arabirimi mdir : disket içerigini görüntüler. Linux:? mdir a: mcopy : Bir dosyayi Linux’tan
diskete, disketten linux’a aktarir. Copying AUTOEXEC.BAT mdel : DOS dosyasini siler. MSDOS mtools arabirimi ayni zamanda VFAT tipi uzun dosya isimlerini de ekranda gösterebilir. Eger dosya ismi, tek bir Dos ismi içine sigmiyorsa ve 8+3 kuralini bozuyorsa uygun bir kisa isim yaratilir. Bunun yaninda mtools’un 2MB’lik disketleri okuyabilme özelligi de vardir. Mtools paketinin konfigürasyon dosyasi /etc/mtools.conf’tur. bu dosyanin kullanimi için mtools1) man dosyasindan yararlanabilirsiniz. |