Linux Dosya ve Dizin İş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
Erisim haklari*
Linux dosya sistemi güvenliginin belkemigini olusturur. Her dosyaya
ayri verilebilen erisim izinleri sayesinde çok daha rahat bir sistem
gerçeklestirilebilir. Bu konuya sadece sistem görevlisi tarafindan
yaklasildigi zaman çikartilabilecek bir sonuçtur. Kullanici bazinda
erisim haklari bazen daha da anlamli olabilir. Yanlis kullanildiginda
hos olmayan sürprizlere yol açabilir. Linux altinda üç çesit erisim
hakki vardir:
• Okuma Izni : Dosyanin okuma izni varsa içerigi görülebilir* dizinin okuma izni varsa içerdigi dosyalarin listesi alinabilir.
•
Yazma Izni : Dosyanin yazma izni varsa dosyayi degistirebilir veya
silebilirsiniz. Dizine yazma izni verildiginde dizin altindaki dosyalar
yazilabilir veya silinebilir.
• Çalistirma Izni : Dosyayi çalistirma hakkini verir.
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.
Erisim haklarinin
disinda bir dosyanin üç izin düzeyi daha vardir. Bunla dosyanin sahibi*
dosyanin grubu ve diger kullanicilardir. Dosyanin sahibi* o dosyayi
olusturan kisidir. Her kullanicinin bir grubu da oldugu için* dosya
olustururken kullanici hangi grupta ise dosya da o gruba ait olacaktir.
Dosyanin sahibi olmayan ve grubu da dosyanin grubuyla uyusmayan
sistemdeki kullanicilar ‘diger’ sinifina girerler.
Dosya
Izinlerinin Degistirilmesi: Dosya izin bilgilerini görebilmek için ls
komutu* -l parametresiyle kullanilir. Asagidaki dosya üzerindeki erisim
haklarina göz atalim:
-rwxr-xr-x 2 ERRE users 182 Feb 12 03:58 deneme
Dosya
bilgisinin an sol kisminda izin haklari yer alir. En bastaki “-“ isreti
bunun düz dosya oldugunu belirtir. “ERRE”* 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 bu şekilde gelmekte.
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
• rwx : Kullanici okuyabilir* yazabilir* çalistirabilir.
• r-x : Grup okuyabilir* çalistirabilir fakat yazamaz.
• r-x : Digerleri okuyabilir* çalistirabilir fakat yazamaz.
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.
Örnek olarak yukaridaki dosyanin okuma iznini kaldirmak için;
$ chmod -r deneme
kullanilabilir.”-“
isareti* iznin kaldirilacagini belirtir. Izin vermek için ise “+”
yazilir. Dosyanin yeni görüntüsü söyle olur:
--wx--x--x 2 ERRE users 182 Feb 12 03:58 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)
$ chmod o+r t2sac (digerleri okuyabilir)
$ chmod g-w deneme (dosyanin grubu yazamaz)
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
200 sahibi yazar
100 sahibi çalistirir
040 grubu okur
020 grubu yazar
010 grubu çalistirir
004 digerleri okur
002 digerleri yazar
001 digerleri çalistirir
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: Bir dosyanin sahibini sadece
sistemdeki root kullanici degistirebilme yetkisine sahiptir. Dosya
sahibinin degistirilmesi için chown komutu kullanilabilir.
Yukaridaki dosyanin sahibi SAMET isimli kullanici ise;
# chown SAMET deneme
Dosyanin yeni hali söyle olur:
-rwxr-xr-x 2 SAMET users 182 Feb 12 03:58 deneme
chgrp komutu yardimiyla da dosyanin grubunu degistirilebilir. Yukaridaki dosyanin grubunu www yapmak için;
# chgrp www deneme
komutu
kullanilabilir. Chown komutu* dosyanin hem kullanicisini* hem de
grubunu degistirebilme özeligine sahiptir. Chown komutundan sonra
kullanici ve grup isimleri aralarinda bir nokta kalacak sekilde
yazilirsa;
$ chown SAMET.www denem
$ ls-l deneme
-rwxr-xr-x 2 SAMET www 182 Feb 12 03:58 deneme
Diger
Dosya Sistemlerinin Kullanilmasi: Bir Linux isletim sisteminde
dosyalarin ve dizinlerin her birisi sabit disk* CDROM veya diger bilgi
saklamaya yarayan cihazlarin birer parçasi olan “dosya sistemlerinde”
tutulur. Linux’ un destekledigi pek çok dosya sistemi vardir ve
bunlarin her birisinin veri depolarken kullandiklari yöntem birbirinden
farklidir.
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:
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.
Linux’a
bagli tüm donanimlara ait bir giris*/dev dizinin altinda bulunur. Bu
dizin altindaki dosyalar özel olarak tanimlanmistir ve bunlara kisaca
“dügüm” adi verilir. örnegin /dev/hda2* birinci IDE sabit diskin ikinci
bölümünü; /dev/tty 1 ise birinci sanal konsolu gösterir.
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
Yazilir.
Eger çekirdekte CD-ROM dosya sistemi destegi varsa ve sistem açilirken
çekirdek CD-ROM’u tanimissa /mnt dizini altinda CD’deki dosya sistemi
yerlestirilir. Buna benzer bir sekilde MS-DOS disket içeren dike
sürücüyü ve üzerinde ext2 dosya sistemi bulunan ikinci IDE sabit diskin
birinci bölümünü sirasiyla /-mnt/disk dizinlerine bindirmek için;
# mount -t msdos /dev/fd0/mnt/disket
# mount -t ext2 /dev/hdb1/mnt/disk
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
veya
# umount /dev/hdb1
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.
Mount ve umount komutlari ile
bir dizin yapisini disk üzerinde konumlandirirken veya ayirirken
üzerinde islem yapilan dizinde bulunmamali* ya da o dizinde baska bir
süreç çalisiyor olmamalidir.
Aksi takdirde asagidaki hata mesaji alinir:
#pwd
/disk
#umount/disk
umount:/dev/hdb1: device is busy
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.
#cd/
#fuser/disk
/disk: 78c
#fuser -km/disk
#umount/disk
fuser komutunu kullanirken dikkatli olama gerekir* zira sistemi kilitleme noktasina getirebilir.
Dosya
Sistemi Bilgileri* Dosya Sistemi Desteginin Eklenmesi* Dosya Sistemi
Yaratilmasi ve Kontrolü* Sembolik Baglantilar* Sabit Baglantilar* Dosya
Arsivleme ve Sikistirma* Dosya Arsivleme* Dosya Sikistirma ve Açma*
Dosya Türleri* Birlikte Kullanim* Dizin Tarama* mtools MSDOS Arabirimi*
Hakkında detaylı anlatımlarım ileri günlerde olacaktır lütfen diğer
ders konularını bekleyin* diğer ders konularımız ile birlikte yukarıda
anlatılanların tamamını gerçekleştirmiş olacaksınız