# shutdown -hf now
komutunu kullanabilirsiniz. Burada yer alan h parametresi sistemin "halt"
edeceğini (tamamen kilitlenme) ve bir daha açılmayacağını
belirtecektir.
Eğer herşey yolunda giderse makinanızın başında
oturup çalışmaya başlayabilirsiniz.
Sistemde çalışmaya başlamak üzere ilk iş olarak
kendinize çalışmak amacıyla bir kullanıcı tanımlayın.
Sistemde başka kullanıcı olacaksa, onlar için de hesap açacaksınız.
Kullanıcı hesabı açmak için
# adduser
komutu size bu konuda yardımcı olacaktır. adduser (veya useradd)
komutu , kullanıcı ismi, isim ve soyad, GID (grup kimliği), UID
(kullanıcı kimliği) gibi birtakım sorular soracaktır.
Bu komut hakkında detaylı bilgiyi Sistem Yönetimi bölümü
altında bulabilirsiniz. root kullanıcısı sistem üzerinde
sınırsız yetkiye sahip olduğundan sistem dosyalarını
kazara değiştirmenize veya silmenize sebep olabilir.
Şimdi yeni hesabınızla sisteme girebilirsiniz. Alt F1 den Alt
F6 ya kadar olan tuşlarla birden çok ekranda (sanal ekranlar) aynı
anda çalışabilirsiniz.
Bu noktadan sonra bazı uygulamaların ayarlamalarını yapmanız
gerekecektir. Artık Linux yüklemek ile ilgili bir sorunuzunun kalmamış
olmasını umuyorum. DOS kullanıcılarına Linux hakkında
bilgi veren sevimli bir döküman için DOS2Linux Mini-HOWTO iyi
bir başlangıç olabilir.
Açılış esnasında makinanızın ismi /etc/rc.d/rc.M
dosyasında belirlenir. Bu dosyayı uygun şekilde değiştirerek
makinanızın ismini de yeniden tanımlayabilirsiniz. Makinanızın
ilk ismi darkstar olacaktır. Eğer TCP/IP ağ üzerinde çalışıyorsanız,
/etc/HOSTNAME dosyasının içeriğini değiştirerek
veya hostname komutu kullanılara makina ismi de değiştirilebilir.
Bunların dışında konfigürasyon gerektiren birçok
durum vardır. Bunlar için NET-3 HOWTO dosyasını iyice okumalısınız.
2.5 Sorun Çıktığında
Tabii ki temennimiz sorun çıkmaması, ama her nedense her zaman
bu satırları okuyacak birkaç kişi olacaktır. Linux
üzerinde kendi ihtiyacınıza göre ayarlanamayacak bir parametre
yok gibidir. Bu özelliği sayesinde son derece esnek bir çalışma
ortamı haline gelebilir. Aynı özellik kişilerin çoğu
zaman kendi çözümlerini bulmalarını da beraberinde
getirmektedir. Kendi bilgisayarınızda Linux çalışmak
için bir miktar döküman karıştırmanız kaçınılmazdır.
Çıkabilecek en önemli sorun bilgisayarın açılmamasıdır.
Bunun birçok sebebi olabilir. Açılış esnasında
İlk olarak LILO çalışır.
Çekirdek yüklenir.
Hizmet veren yazılımlar teker teker çalışmaya başlarlar.
Her aşama birçok satırda durumunu belirtecektir. Çalışan
yazılımlar veya yazılım parçalarının her
biri birbirinden bağımsız olduğu için açılış
sırasında geldiğiniz nokta çok önemlidir. LILO çalışmadığında
veya çekirdek yüklenirken takılırsa boot disketi ile rahatlıkla
sistemi açabilirsiniz. Örnek olarak Linux yüklü disk bölümünüzün
/dev/hda2 olduğunu varsayalım. Boot disketi parametre istediğinde
mount root=/dev/hda2
yazmanız yeterli olacaktır. Bu durumda boot disketinde yer alan çekirdek
ile belirttiğiniz bölümde yer alan Linux hiyerarşisi açılacaktır.
Çalışan bu sisteminiz içerisinde artık hatanın
kaynağını daha rahat bulabilirsiniz.
Çekirdeğin yükleme esanasında takılması büyük
ölçüde çekirdeğin donanımı doğru belirleyememesinden
çıkar. Mesela ethernet kartınızı yanlış tanımış
olabilir. Bunu çözmenin temel yöntemi çekirdek içerisinde
kullanmayacağınız donanımlara ilişkin destekleri kaldırmak
(Tüm ethernet kartlarını destekleyen bir çekirdek yerine
sadece kullanmanızın muhtemel olduğu ethernet kartlarına
destek veren bir çekirdek derlemek) veya çekirdeğe yardımcı
olabilecek açılış parametreleri vermek.
Çekirdek derlemek hakkında Kernel-HOWTO ve boot parametreleri hakkında
BootPromt-HOWTO yardımcı olabilirler. Çalışan sisteminizde
bir arıza meydana gelip de makina aniden çalışmamaya başlarsa
en son yaptığınız değişiklikleri gözden geçirin.
Ve son olarak, sistemin çalışmaması her zaman Linuxtan kaynaklanmayabilir,
donanım ile ilgili sorunlar da yaşayabilirsiniz. Rasgele davranışlar,
durup dururken çakılmalar, panik mesajları altında, bozuk
sabit diskler, normalden yüksek frekansta çalıştırılan
işlemciler ve sistem saatine göre yavaş kaçan veya bozuk
RAMlar yatabilir.
2.6 Başlangıçta
Bu satırları okuduğunuza göre çalışır
durumda bir Linux sisteminiz var demektir. Hala silmediniz mi yoksa? Şaka
bir yana, büyük badireler atlattınız. Önünüze
sayısız engeller çıkabilirdi. Kurarken elektrikler kesilebilirdi,
sabit disk çizilebilirdi veya yanlış bölümü formatlayabilirdiniz.
Özellikle Linux Slackware dağıtımını kurmak, dökümantasyon
olmadan veya hatırlı bir arkadaşın yardımı olmaksızın
gerçekten zordur.
Bu bölümde Linuxa küçük bir giriş yapılacak,
daha sonra da UNIX kullanmayanlar sistemle tanıştıracaktır.
Bölüm boyunca yapmanız gereken korkmadan sistem üzerinde
kolaylıkla gezinti yapmak ve dosyaları kurcalamaktır.
Önceki bölümde sisteme girebilmek için şifresi olmayan
"root" kullanıcıyı kullanmıştınız.
Bu kullanıcı sistemde en fazla yetkiye sahip kullanıcı olup
sistem görevlisi (sorumlusu) adını alır. Eğer root
dışında bir kullanıcı hesabı tanımlanmışsa
onu kullanın. Şifre yazıldıktan sonra komut istemcisine,
yani kısaca kabuk dediğimiz programa girilir. Şifre yazılırken,
başkalarının görmemesi için ekrana basılmaz.
Kullanıcı isimleri veya şifrelerde büyük ve küçük
harfler arasında fark vardır. Root, root ve ROOT, farklı kullanıcılara
işaret eder. Klavyenin en sağındaki Caps Lock tuşunun yanmadığına
emin olun.
Sisteme ilk girişte, aşağıdaki gibi bir satırla karşılaşacaksınız.
Welcome to Linux 1.2.13.
linux login: root
password:
Last login: Thu Feb 13 12:46:35 on tty1
Linux 1.2.13.
You have mail.
linux:~#
Genellikle komut istemcisinin sonundaki karakter, root kullanıcısı
için #, diğer kullanıcılar için $ olur. Bu karakterden
önce de makina ismi yeralır. MS-DOSta olduğu gibi burada UNIX
komutlarını girebileceğiniz kabuk (shell) üzerindesiniz.
Şifreyi değiştirmek için kullanılan komut passwd dir.
Bir kullanıcı sadece kendi şifresini değiştirirken
roota herkesin şifresini değiştirme yetkisi verilmiştir.
Herhangi bir sistemde hesap şifrenizi unutursanız, bunu sadece root
değiştirebilir. Root iken passwd yazın ve enter tuşuna basın.
linux:~# passwd
Changing password for root
Enter new password: *******
Re-type new password: ******
Password changed.
linux:~#
Şifrenizi iyi saklayın. Root şifresini ele geçiren birisi
sistemde istediği değişikliği yapabilir. Şifre seçimi
için Linux İşletim Sisteminde Güvenlik konu başlığına
göz gezdirin.
Linux komutları hakkında bilgi almak için man komutu kullanılır.
Eğer kurulum aşamasında man dosyalarının kopyalanması
sorusuna olumlu yanıt verilmişse bunlar /usr/man dizini altında
bulunurlar. Örneğin passwd komutu hakkında daha detaylı
bilgi almak için
$ man passwd
yazın. Tüm man sayfaları /usr/man dizini altında 8 ayrı
dizinde saklanır (man1 .. man8). Bazı komutların man dosyaları
birden fazla dizin altında bulunur, bir dosya komut hakkında temel
bilgi verirken diğeri sistem programcılarına yönelik olabilir.
Örnek olarak mount komutu, hem 2, hem de 8 numaralı man dosyalarıyla
birlikte arşivlenmiştir. C programlayıcısı, mount komutuna
ulaşmak için
$ man 2 mount
yazarken normal kullanıcı,
$ man 8 mount
yazmalıdır. Bunun yanında başlığında belirli
bir anahtar sözcüğü içeren tüm man dosyalarını
araştırmak için apropos komutu kullanılır.
Her komut, bir veya birden çok parametre alabilir. Örnek olarak,
find . -name "*.txt" -print
komutu, bulunduğunuz yerden itibaren tüm dosyaları araştıracak
ve bunların arasından sonu .txt ile bitenleri ekrana basacaktır.
Parametreler genel olarak "-" işaretleri ve bu işaretten
sonra gelen parametre ismi ile belirtilirler.
2.7 Linux Komut Yapısı
UNIX ve benzeri işletim sitemlerinde kullanıcının komut
yazmasını sağlayan, bu komutları yorumlayarak gerekli işlemleri
yapan programlara kabuk (shell) adı verilir. UNIXte bir kullanıcı
bir dizi kabuktan istediğini seçebilir. Kabuklar ile ilgili ayrıntılı
bilgi ileride verilecektir. Kullandığınız kabuk ne olursa
olsun, gerek kabuktan kaynaklanan, gerekse UNIX komutlarının hepsinin
uyduğu bazı standartlardan kaynaklanan bazı geleneksel yapılar
vardır. Bunları bilmeniz ilk kez duyduğunuz bir komutun kullanımını
bile kolayca çıkarabilmenizin yanı sıra, bir dizi genel
hatadan kaçınmanızı da sağlayacaktır.
· · · UNIXte (ve Linuxta) bütün komutlar ve dosya isimlerinde
büyük/küçük harf ayrımı önemlidir. Sistem
komutlarının ve dosyaların çoğu küçük
harfle yazılır.
· · · Komut ve dosya adlarında kullanacağınız
bazı karakterlerin gerek dosya ve dizin yapısı, gerekse kabuk
ve diğer komutlar nedeniyle bazı özel anlamları vardır.
Bu karakterlerden yeri geldikçe söz edilecektir. Örneğin,
`/ karakteri hiçbir dosya adında bulunamaz (dosya ve dizinler için
ayraç olarak kullanıldığından). `- ile başlayan
bir dosya oluşturulabilir olsa da silmeye kalktığında yeni
bir UNIX kullanıcısının başına dert açabilir.
· · · UNIXte komutlara seçenek verirken seçenekten
önce `- karakteri kullanılır. Örneğin ls -l
· · · UNIX komutları tersi istenmedikçe girdilerini
standart girdiden (klavye) alır, çıktılarını standart
çıktıya (ekran) yazar. Bu özellik ileride anlatılacak
olan yönlendirme ve boru (pipe) öperatorleri ile birlikte komut satırından
birçok işlemi kolayca yapmanızı sağlar.
UNIX kabukları komut satırından verilen komutu çalıştırmadan
önce bir dizi karakteri yorumlayarak dosya ad(lar)ına çevirirler.
Bu karakterler:
o o o * 0 dahil herhangi bir sayıda karakter yerine geçer. Örneğin
rm * komutu bütün dosyaları siler, ls -l a* komutu `a ile başlayan
dosyaların listesini verir.
o o o ? tek bir karakter yerine geçer. Örneğin ?? adı iki
karakterden oluşan bütün dosyalar anlamına gelir.
o o o [] karakterleri arasında yazılan liste içindeki herhangi
bir harfe dönüştürülür. Örneğin cp *[abc]
/tmp komutu `a, `b ya da `c ile biten bütün dosyaları /tmp dizinine
kopyalayacaktır. liste içinde aralarına `- işareti koyarak
aralıklar verebilirsiniz. Örneğin, [A-Z]* büyük harfle
başlayan bütün dosyalar anlamına gelir. Liste içindeki
`^ karakteri sonrasında belirtilen liste dışındaki bütün
karakterler anlamına gelir. Örneğin *[^0-9]* adında rakam
olmayan herhangi bir dosya anlamına gelecektir.
2.8 Dosya ve Dizin Yapısı
UNIX altında bazı karakterlerin özel anlamları vardır.
Dizin ve dosya isimlerinin başında nokta olması durumunda bu
dosyalar gizli dosya haline gelir ve parametresiz yazılan ls komutuyla
görünmez.
Dosya ve dizin isimleri 255 karakteri aşamazlar.
Sisteme girince önceden tanımlanmış bir dizin altında
bulunursunuz. Bu dizin normal kullanıcılar için genellikle /home/
ve ardından gelen kullanıcı dizini ismidir. Bulunduğunuz
dizinin ismini görmek için pwd (print working directory) yazın.
Temel dosya ve dizin kavramları hakkında detaylı bilgi alabilmek
için MS-DOS veya, en iyisi bir UNIX kitabı edinin.
$ pwd
/home/gorkem
$
UNIX komut yapısı DOSa çok benzer. Dizin değiştirmek
için cd , dizin yaratmak için mkdir komutlarını sistemde
sıkça kullanılır.
$ cd /
$ pwd
/
Hiyerarşik bir sıraya sahip olan UNIXte en üstte / dizini (kök
dizin) yeralır. Sistemdeki tüm diğer dosya ve dizinler bunun
altında toplanırlar.
~
işareti, kullanıcının ev dizinini gösterir. Ev dizinine
geçin ve mkdir komutu ile benim isimli bir dizin yaratın. Dizini patikasını,
bir başka deyişle kök dizininden itibaren ismini vererek de yaratabilirsiniz.
$ cd ~
$ pwd
/home/gorkem
$ mkdir /home/gorkem/benim
3. Kabuk İşlemleri
Sisteme girdiğiniz anda kabuk programının çalıştırıldığından
bahsetmiştik. Bu andan sonra yapacağınız tüm işlemler
bu kabuk programı tarafından yönetilir ve denetlenir. Kabuk,
klavyeden girilen komutları çalıştırarak bir arabirim
görevi yapar. UNIX (ve Linux) altında geliştirilen sayısız
kabuk çeşidi ve bunların herbirinin kendine ait özelliği
vardır. Her programcı kendi zevkine hitap eden kabuğu seçebilir,
sistemde yeralan kullanıcılar farklı kabuklar üzerinde çalışabilirler.
O an hangi kabuk üzerinde yeraldığınızı öğrenmek
için echo $SHELL yazın.
$ echo $SHELL
/bin/bash
Sıkça kullanılan kabuklar,
sh (Shell ya da Bourne Shell): İlk UNIX kabuğu.
ksh (Korn Shell): sh uyumlu, birçok ek programlama özelliği içeren
bir kabuk. Bu kabuk da yaygın bir kitle tarafından kullanılıyor.
bash(Bourne Again Shell): Kullanım kolaylığı bakımından
en çok rağbet gören bash, GNU tarafından kaynak kodu olarak
dağıtılıyor. bash sh ve ksh uyumluluğunu korurken,
özellikle etkileşimli kullanıma yönelik (komut tamamlama,
gibi) birçok yenilik de içerir. Bu yazının hazırlandığı
1997 Temmuz ayı başlarında Bash 2.0.1 sürümü çıkmıştı.
csh (C shell): Berkeley Üniversitesinde geliştirilen cshin C diline
benzer bir programlama yapısı vardır.
tcsh: cshın biraz geliştirilmiş hali.
Yukarıdaki kabuk programlarından sh, ksh ve bash birbirleriyle uyumludur
ve yukarıda en ilkelden en gelişmişe göre sıralanmışlardır.
Aynı durum csh ve tcsh için de geçerlidir. Kullanılan shell
genellikle kişisel bir tercih nedeni olsa da, bütün sistem scriptleri
sh ile yazıldığından, sistem yöneticilerine sh ailesinden
bir kabuk kullanmaları önerilir.
Kabuk programları genellikle /bin dizini altında yeralır. Kullanıcının
sisteme girerken hangi kabuğu kullanacağı /etc/passwd dosyasında
yeralır. Bunu değiştirmek için chsh (change shell) komutunu
kullanabilirsiniz.
$ chsh
Password:
Changing the login shell for cagri
Enter the new value, or press return for the default
Login Shell [/bin/sh]: /bin/bash
$
Sisteminizde NIS kullanılıyorsa chsh yerine yppasswd -s komutunu kullanmalısınız.
3.1 Yönlendirme
Kullanıcı, ekrana yazdığı bir komutun neler yaptığını
en rahat şekilde komut tarafından ekrana yönlendirilen bilgilerden
anlayabilir. Program, kullanıcıyı bilgilendirme amacıyla
mümkün olduğu kadar çok, fakat ortalığı fazla
karıştırmamak için de mümkün olduğu kadar
az bilgiyi ekrana vermelidir.
3.2 Standart Girdi, Çıktı ve Hata
Linuxta, programın ekrana yazılan bilgiyi iki sınıf altında
toplayabiliriz. Birincisi, olağandışı bir durumu bildiren
standart hata, diğeri de her türlü verinin yazıldığı
standart çıktı. Program çalıştığı
andan itibaren bu iki kanal üzerinden akan bilgiler, programın çalıştığı
sanal terminale yazılırlar. Program girdilerini ise standart girdi
aracı olan klavyeden alır.
Eğer bu bilgiler bir ekran boyundan (25 satır) fazla tutuyorsa bazı
satırlar programcının gözünden kaçabilir. Bunu
önlemek amacıyla standart çıktı ve hata bir dosyaya
yazılacak şekilde ayarlanabilir. Yönlendirme olarak da bilinen
bu işlem UNIX altında (DOSta olduğu gibi) > karakteri ile
gerçekleştirilir.
Örnek olarak o an bulunduğunuz dizinde yeralan dosyaları ekrana
getirin :
$ ls -al
Bu komut, standart çıktı olarak dosyaların bilgilerini ekrana
getirecektir. Bu çıktıyı, bir dosyaya yönlendirelim
ve dosyanın içeriğine göz atalım:
linux:~$ ls -al > liste
linux:~$ cat liste
total 16
drwxr-xr-x 5 gorkem users 1024 Feb 13 13:10 .
drwxr-xr-x 4 root root 1024 Jan 7 1980 ..
-rw-r--r-- 1 gorkem users 390 Feb 13 12:56 .Xdefaults
-rw-r--r-- 1 gorkem ftpadm 2016 Feb 13 13:09 .bash_history
-rw-r--r-- 1 gorkem users 1 Feb 13 12:57 .bashrc
-rw-r--r-- 1 gorkem users 163 Nov 24 1993 .kermrc
-rw-r--r-- 1 gorkem users 34 Nov 24 1993 .less
-rw-r--r-- 1 gorkem users 114 Nov 24 1993 .lessrc
drwxr-xr-x 2 gorkem users 1024 Jan 7 1980 .term
-rw-r--r-- 1 gorkem users 87 Feb 13 12:56 .xinitrc
-rw-r--r-- 1 gorkem users 2795 Feb 13 13:06 adres
-rw-r--r-- 1 gorkem users 0 Feb 13 13:10 liste
drwxr-xr-x 2 gorkem users 1024 Feb 13 12:54 mail
drwxr-xr-x 2 gorkem users 1024 Feb 13 12:54 perl
-rw-r--r-- 1 gorkem users 0 Feb 13 13:10 typescript
linux:~$
> karakteri standart hatayı dosyaya yönlendirmez. Bu işlem
için 2> kullanılır. Ama hatayı görebilmek için,
hata yaratan bir komut yazmalıyız, değil mi ?
$ ls /deneme
/deneme : No such file or directory
$ ls /deneme 2> hata
$ cat hata
/deneme : No such file or directory
Aşağıdaki komutun işletilmesinin ardından standart
çıktı oku1 dosyasına, standart hata ise oku2 dosyasına
yazılacaktır. Bu dosyaları komutu çalıştırdıktan
sonra incelemek suretiyle neler olup bittiğini anlamak mümkün
olur.
$ mkdir ~/deneme (deneme isimli bir dizin yarat)
$ touch ~/deneme/gecici (gecici isimli bir dosya yarat)
$ cat ~/deneme 2>oku2 >oku1
Kabuk, standart çıktı ve standart girdi için sırayla
2 ve 1 numaralarının kullanımına izin verir. Yukarıda
yeralan son komutta, standart hata mesajları için 2 kullanılarak
hataların oku2 dosyasına yazılmıştır. Aşağıda,
çekirdek derlemek için sürekli kullandığım program
yeralıyor. Yönlendirme sayesinde ekrana gelmesi gereken mesajlar kullanılmayan
9. sanal konsola yönlendiriliyor.
# make config
# make dep > /dev/tty9
# make clean > /dev/tty9
# time make zImage > /dev/tty9
Son satırdaki time komutu, kendinden sonra gelen komutun ne kadar zaman
içinde çalıştırıldığını gösterir.
Çekirdek derlemede geçen zaman, makinanın gücü hakkında
bir fikir verebilir. Peki ne hata, ne de çıktıyı ekranda
görmek istemiyorsam ne yapmalıyım ? Bunun için standart
çıktı ve hatayı biraraya getirerek yönlendirilen her
çıktının kaybolduğu ``kara deliğe atmak yeterlidir:
$ ls /deneme > /dev/null 2>&1
Yukarıdaki komutun yazılış sırasına dikkat edin.
Standart çıktı ya da standart hatayı yönlendirirken,
> işareti kullanırsanız: dosya yoksa, oluşturulur ve
komutun çıktısı dosyaya yazılır. Dosya varsa,
içeriği yok olur, ve komutun çıktısı dosyanın
yeni içeriği olur. Var olan bir dosyayının eski içeriğini
tamamen silmek değil de komutun çıktısını dosyaya
eklemek istiyorsanız >> kullanmalısınız. Bu durumda
dosya varsa komutun çıktısı dosyanın eski içeriği
korunarak sonuna eklenir, dosya yoksa oluşturulur ve komutun çıktısı
dosyaya yazılır. Örneğin:
$ echo deneme1 >>deneme.txt
$ cat deneme.txt
deneme1
$ echo deneme2 >>deneme.txt
$ cat deneme.txt
deneme1
deneme2
$
Örnekte görüldügü gibi ilk komut deneme.txt dosyasını
oluşturdu. İkincisi ise oluşan dosyanın içeriğini
koruyarak ikinci komutun çıktısını bu dosyanın
sonuna ekliyor.
Standart hata ve çıktıya ek olarak UNIXin desteklediği bir
yönlendirme daha vardır: Standart girdi sayesinde bir dosyayı
oluşturan satırlar, bir komut veya programa yönlendirilebilir.
Daha önce bir metin editor kullanarak hazırlamış olduğumuz
raporu patrona kısa yoldan göndermek için,
$ mail -s "rapor" patron < rapor.txt
Dosyanın içeriği, mail komutuna girdi olmuş ve rapor.txt
dosyası patron kullanıcısına ``rapor konu başlığıyla
e-posta ile gönderilmiştir.
3.3 Çok görevlilik
UNIXin en büyük silahlarından biri süreçlerdir. Her
süreç sistemde bağımsız çalışan, birbirini
etkilemeyen ve herbiri kendi kaynağını kullanan programdır.
Süreçler arkaplanda veya kabuğun kontrolünde çalışabilir.
Çekirdek, her sürecin kullandığı sistem kaynağından
haberdar olur ve bu kaynakların süreçler arasında adilce
paylaşılmasından sorumludur.
Bir süreç, aksi belirtilmedikçe çalıştığı
süre içinde klavyeden bilgi alır ve ekrana bilgi verir.
Kullanıcıların haberi bile olmadan çalışan süreçler,
Linux makinasındaki G/Ç işlemlerini gerçekleştirebilmek
için sürekli faaliyet içinde bulunurlar. Onlarca süreçten
bazıları kullanıcıların sisteme girmesini sağlarken
(getty) bazıları da WWW ve FTP gibi İnternet tabanlı istekleri
yerine getirir (httpd, ftpd).
4. Dosya ve Dizin İşlemleri
Tıpkı MS-DOSta olduğu gibi Linux dosya yapısının
da hiyerarşik bir yapıya sahip olduğunu söylemiştik.
Temel dosya bilgisi önceki konularda anlatıldığından
burada sadece dosya ve dizinlerle ilgili özelliklere değinilecektir.
4.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üprizlere 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
öntanı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.
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.
4.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 ozgur isimli
kullanıcı yapalım.
# chown ozgur deneme
Dosyanın yeni hali şöyle olur :
-rwxr-xr-x 2 ozgur users 182 Feb 12 03:58 deneme
chgrp komutu yardımıyla da dosyanın grubunu değiştirilebilir.
Yukarıdaki dosyanın grubunu www yapmak için
# chgrp www 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 ozgur.www deneme
$ ls -l deneme
-rwxr-xr-x 2 ozgur www 182 Feb 12 03:58 deneme
4.3 Diğer Dosya Sistemlerinin Kullanılması
Bir Linux işletim sisteminde dosyaların ve dizinlerin herbirisi sabit
disk, CDROM veya diğer bilgi saklamaya yarayan cihazların birer parçası
olan "dosya sistemlerinde" tutulur. Linuxun desteklediği pek
çok dosya sistemi vardır ve bunların her birisinin veri depolarken
kullandıkları yöntem birbirinden farklıdır.
Linuxta her dosya sistemi farklı bir dizinde tutulur ve bu dizinlerin bilgisi
/etc/fstab dosyasında yeralı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.
Bir sistem görevlisi olarak çeşitli dosya sistemlerini tanımalı,
bu dosya sistemleri üzerinde hata oluşması durumunda zararı
en aza indirecek yolu bilmelisiniz. Bilgisayar başında geçireceğiniz
zamanınızın büyük bir bölümünü
dosya sistemleri üzerinde harcayacaksınız.
4.4 Sembolik Bağlantılar
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ğı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>
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
-rw-r--r-- 1 root root 0 Feb 15 08:14 typescript
linux:~# ln -s /usr/src/linux 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 cd linux" yazması yetecektir. Sembolik bağlantı
dosyasını diğerlerinden ayıran, satırın en solundaki
l karakteridir.
4.5 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ştiriliyor.
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ı (unzip) işlemlerini yapabiliyor.
Fazla disk alanınız yoksa bu iki komut her zaman yardımınıza
koşacaktır.
4.6 Dizin Tarama
Linux işletim sistemini ilk kurduğunuz anda, yüzlerce dizin altında
binlerce dosyanız olacaktır. find komutu, bu dosyaların arasında
tarama yapabilmek için geliştirilmiştir. Bu komutla sadece dosya
isimlerine değil, dosyanın sahibi, erişim hakları, son erişim
tarihi gibi verilere de ulaşmak mümkündür. find komutunun
en sık kullanış şekli şudur :
find <dizin-ismi> -name <ne-aratiliyor>
dizin-ismi yerine taranacak olan dosyanın bulunduğu dizin ismi yazılır.
-name parametresinden sonra ise aranan dosyanın ismini girin. Burada "*"
ve "?" gibi joker karakterlerini de kullanabilirsiniz. (Bu gibi özel
karakterler hakkında daha geniş bilgi Bash kabuğu konusu altında
bulunabilir)
Aşağıda, find komutunun kullanımına ilişkin birkaç
örnek yeralıyor.
$ find . -name "*.html"
(bulundugunuz dizinden itibaren sonu .html ile biten dosyalari arar)
$ find /home/halil -name "screen"
(/home/halil dizininden itibaren screen isimli dosyalari arar)
Bu komut, -type d parametresi yardımıyla sadece dizin isimleri arasında
arama yapar.
$ find /usr/ -name "linux" -type d
find komutuna bir alternatif olan locate komutu ile dosyalar çok kısa
bir sürede taranabiliyor. update komutu, her sabah belirli bir saatte sistemdeki
tüm dosya ve dizin isimlerini bir veri tabanına yükler. Daha
sonra bu dosyada yeralan belirli bir dosya veya dizin ismini locate ile arayabilirsiniz:
# locate pico
/usr/bin/pico
/usr/man/man1/pico.1.gz
Yukarıdaki komut ile içinde pico kelimesi geçen dosyaları
bulduk.
4.7 mtools MSDOS Arabirimi
Linux altından, MS-DOS formatlı disketlere ulaşmayı kolaylaştıran
paketin ismi mtools olarak biliniyor. Bu isim, paketin tüm komutlarının
ilk harfinin "m" olmasından kaynaklanmış. Paketle birlikte
gelen çeşitli yardımcı programlar sayesinde MS-DOS formatlı
diskette yeralan dosyalar listelenebilir, silinebilir, disket formatlanabilir,
hatta disketin kimliği değiştirilebilir.
Son çıkan mtools paketi, 2MB formatlı disketleri de tanıyabiliyor.
Aşağıda, mtools paketinden çıkan bazı komutlar
ve örnek kullanımları gösteriliyor.
mdir : disketin içeriğini görüntüler.
linux:~# mdir a:
Volume in drive A is SYSTEM_BT
Directory for A:/
IO SYS 40566 9-30-93 6:20a
MSDOS SYS 38138 9-30-93 6:20a
AUTOEXEC BAT 91 3-29-95 10:23a
NDD <DIR> 3-29-95 10:26a
CHKLIST MS 81 11-07-96 7:00p
VGA_45 <DIR> 3-29-95 10:28a
YARDIM <DIR> 3-29-95 10:17a
UTIL <DIR> 3-29-95 10:17a
VIRUS <DIR> 3-29-95 10:17a
9 File(s) 291328 bytes free
linux:~#
mcopy : Bir dosyayı Linuxtan diskete, disketten Linuxa aktarır.
linux:~# mcopy a:/autoexec.bat .
Copying AUTOEXEC.BAT
mdel : DOS dosyasını siler
mformat : Disketi formatlar.
mmd : Disket üzerinde dizin oluşturur.
MSDOS mtools arabirimi aynı zamanda VFAT tipi uzun dosya isimlerini de
ekranda gösterebilir. Eğer dosya ismi, tek bir DOS ismi içine
sığmıyorsa ve 8+3 kuralını bozuyorsa uygun bir kısa
isim yaratılır.
Bunun yanında mtoolsun 2 Mblık disketleri okuyabilme özelliği
de vardır. mtools paketinin konfigürasyon dosyası /etc/mtools.conftur.
Bu dosyanın kullanımı için mtools(1) man dosyasından
yararlanabilirsiniz.
5. Linux Sistem Yönetimi
Bir işletim sistemi, marka ve modeli ne olursa olsun bakım isteyen
bir araçtır. Yapılacak küçük bir hata, veya hatayı
gösteren bir işaretin gözardı edilmesi, zaten değerli
olan zamanın boşa gitmesine neden olur. Linux da açık bir
işletim sistemi olduğundan, sorumluluk sahibi sistem yöneticisi
tarafından açık tutulduğu süre içinde verimli
ve düzgün çalışması için gerekli özen
gösterilmelidir. İnternet üzerinde üzerinde 500 kullanıcı
olan , veya ftp.linux.org adresi gibi her hafta onbinlerce ziyaretçisi
olup ağır sorumluluklar yüklenen Linux makinaları vardır.
Bunların bir saat boyunca bile kapalı kalması, o anda bağlanmayı
bekleyen pek çok kullanıcıyı mağdur durumda bırakacaktır.
Performansı etkileyen unsurların başında, önlemek pek
de elinizde olmasa da elektrik kesintileri ve makinanın kapalı olduğu
zamana denk gelen çekirdek değişimleridir. Bu tür donanımsal
etkileri bir tarafa bırakırsak sistem yöneticisinin uyması
gereken ve İnternet etikleri dediğimiz davranış kuralları
vardır. Bu kurallara öncelikle sistem sorumlusu uymalı ve kullanıcıları
da uymaya zorlamalıdır. Açık işletim sistemlerinin
en büyük sorunlarından biri olan güvenlik konusuna sistem
yöneticisi belirli günler zamanının bir bölümünü
ayırmalıdır. Kullanıcılardan gelebilecek her türlü
saldırı, sisteme onarılması çok zor olabilecek zararlar
verebilir. Bunun için düzenli olarak dosyaları kontrol edin ve
şüpheli durumlarda araştırma yapmaktan çekinmeyin.
Yukarıdaki tabloya bakarak işinizin zor olduğu kanısına
kapılmayın, zira tüm bu denetleme mekanizmasını basitleştirebilirsiniz.
Yapılacak tüm rutin işleri bir programa yazıp günün
veya haftanın belirli saatlerinde bu programı çalıştırın
ve olabilecek tüm hata mesajlarını bir dosyaya yazın. Bu
dosyayı boş bir vakitte inceleyerek programın ne kadar düzgün
çalıştığını gözlemleyebilirsiniz. Bunun
yanında sistem yönetimini zevkli kılacak uygulama programları
da vardır. Bu uygulama yazılımlarından bazıları
o kadar gelişmiştir ki yapamadıkları tek iş yemek pişirmektir.
Yabancı kaynaklı yayınlardan Essential System Management (Frisch)
ve Essential System Administration (OReilly) bu yönde tavsiye edilebilecek
kitaplar. Piyasada bulunan Türkçe kitapların hiçbirisinde
sistem yönetimine ciddi olarak değinilmediği için Türkçe
yayın bulmak gayet zor.
5.1 Yetkili Kullanıcı ve Diğer Kullanıcılarla İlişkiler
Sistemin en büyük sorumlusu root şifresini bilen kullanıcıdır.
Yukarıda da belirtildiği gibi bu şifrenin sorumluluğu büyüktür.
Sistem yöneticisi, makinadaki kullanıcıların isteklerini
ve şikayetlerini yönelttikleri tek merci durumundadır. Burada
karşılıklı güven sözkonusudur, bunu da sistem
görevlisi herkese hissettirmelidir. root kullanıcısının,
başkalarından gözünüz gibi sakladığınız
e-posta ve dosyaları sizden habersiz okuduğunu öğrenseydiniz
tepkiniz ne olurdu ?
Root kullanıcısının sahibinin haberi olmaksızın
sistem kullanıcılarına ait dosyaların yerini ve izinlerini
değiştirmesi de uygun değildir. Zorda kalsanız bile, başkalarına
ait hiçbir dosyayı silmeyin veya içeriğini değiştirmeyin.
Belki de sıkışık bir durumdan kurtulmanın başka
bir yolu vardır ?
Temel olarak zaman zaman kullanıcıları bilgilendirmek hoş
bir davranış olarak karşılanır ve onların Linuxa
olan ilgilerini perçinleyebilir. Örneğin /etc/motd ve /etc/issue
dosyalarına periyodik olarak çekirdek değişimlerini ve eklenen
uygulama programlarını haber veren birkaç satır iliştirebilirsiniz.
Sistemde açılan her kullanıcı hesabına Linux Çokça
Sorulan Sorular (Linux ÇSS), çeşitli UNIX belgeleri ve İnternet
hakkında bilgilendirici dökümanlarının yeraldığı
bir dizi e-posta da yollanabilir. Bu konuda yaratıcılığınızı
konuşturun.
5.2 Sistem Kuralları
Kullanıcı hesabı açmadan önce birkaç basit kuralı
tanımlayıp kullanıcılardan bunlara uymalarını
istemelisiniz. En basitinden birkaç kural, bir hesabın birden fazla
kişi ile kullanılmaması, sistemin güvenliğini zedeleyecek
crack, cops, satan gibi programların diğer kullanıcıların
zararına çalıştırılmaması ve sistem kaynaklarının
sorumsuzca tüketilmemesi olarak sayılabilir.
Siz, en iyisi yukarıda yeralan kuralları birkaç madde halinde
yazın ve sistemdeki herkesin bu maddelere uyacağını taahhüt
eden imzasını alın. Tatsız durumların çıkmaması
için de önlem almayı ihmal etmeyin.
5.3 Sistemin Yedeklenmesi
Makinanızın belirli aralıklarla yedeklenmesi, sistem güvenliğinin
bir parçası sayılabilir. Donanımdan meydana gelen bir hata
sonucu veya yanlışlıkla girilen bir komut, sistemi açılamaz
hale getirebilir. Ancak yedekleme ile bu tür kullanıcı hatalarının
önüne geçebilirsiniz. Yedekleme genellikle tüm sistem üzerinde
yapılmaz. Sadece önemli sistem bilgilerini içeren dizinler yedekleme
aşamasına girmelidir.
Yedekleme üniteleri olarak teyp, disket veya başka diskler kullanılabilir.
Teypler, büyük miktarda yedekleme işlemleri için ön
plana çıksa da birkaç dosyadan oluşan paketlerin korunması
söz konusu olacaksa disketler daha pratiktir. İnternet üzerinde
ise bağımsız bir makina, kendi rutin görevi dışında
yerel ağda bulunan makinaların yedeklerini belirli gün ve saatlerde
almak üzere programlanabilir.
Sistemde fazla miktarda kullanıcı varsa yedekleme işlemi ciddi
bir düzene oturtulmalıdır. Sistemdeki hayati dosyalar örneğin
her hafta, üzerinde kullanıcıların bulunmadığı
akşam saatlerinde yedeklemeye sokulabilir.
Yedekleme için birkaç yol önerilebilir. Kullanışlı
olması için yedeklemeyi yapan program, yedeklenen dosyalar arasındaki
belirli bir dosyayı kolayca açabilmelidir. Bunun yanında, yedek
bilginin de bozulması ihtimali vardır. Yedeğin içindeki
tek baytın bozulması, bazı durumlarda tüm yedeğin çöp
yığını haline gelmesine yol açabilir. Doğru yedekleme
programının kullanılması bu anda önem kazanır.
Yedeklenecek olan dizinlerden en önemlileri, sistem konfigürasyon
dosyalarının yeraldığı /etc, kullanıcı dizinlerinin
yeraldığı /home, bazı X Window dosyalarının bulunduğu
/usr/X11/lib/X11 dizini altındaki bazı dosya ve dizinler, /usr ve
/usr/local dizinde yeralan bazı dizin ve dosyalar ile /root dizinidir.
Şart olmasa da yedekleme için yeriniz bolsa /tmp dizinini de koyabilirsiniz.
Elektronik postaları ( /var/spool/mail) da unutmamak gerekir. Yoksa, çok
meşhur olan "e-meyılım cyber-spacede kayboldu" cümlesini
sıkça duymaya başlarsınız.
Aşağıdaki komut, /usr ve /home dizinlerini diskete yedekler.
$ tar cvMf /dev/fd0 /usr /home
tar komutununa verilen M parametresi yardımıyla bir disket dolduğu
zaman başka bir diskete devam etmenizi sağlar. Dizinleri sıkıştırarak
atmak için z seçeneğini vermek yeterli olur. Sıkıştırarak
yedekleme disket ya da teypte yer kazandıracaktır, ancak hata olduğunda
verilerin kurtarılması daha zor olacaktır. Açmak için
$ tar xf /dev/fd0
komutu yeterlidir. Sıkıştırılarak diskete atılan
yedekler için açarken de "z" kullanın. Disketleri sıra
ile numaralandırmayı ihmal etmeyin, yoksa bir disketten fazla yer
kaplayan arşivleri açamazdınız.
Linuxta gerek SCSI, gerek floppy teyp desteği vardır. Özellikle
çok veri yedekleyecekseniz teypler kaçınılmaz olur. Teyplere
yedek alırken de yukarıdaki floppy orneklerindeki gibi tar kullanabilirsiniz.
tarın yanı sıra sıkça kullanılan yedekleme komutları
arasında dump ve restore, cpio ve dd gösterilebilir. Linuxta ilk SCSI
teyp sürücüye /dev/st0, ikinciye /dev/st1 ... kullanarak, PClerde
sıkça kullanılan ``floppy teyplere de /dev/ftape üzerinden
erişebilirsiniz. Piyasada bulacağınız ortalama floppy teyplerin
kapasiteleri 120M, 4mm SCSI teyplerin 4G, 8mm SCSI teyplerin ise 7G kadar olacaktır.
Teybin kapasitesi kullandığınız sürücünün
yeteneğine ve teybinizin uzunluğuna göre değişir. Örnek
olarak, bütün sistemin tar kullanarak ilk SCSI teybe yedeklemek için,
# tar cvf /dev/st0 /
Bir TCP/IP ağınız varsa, ve birden fazla Linux ya da UNIX makinası
kullanıyorsanız, tek bir teyp sürücü ile bütün
makinalarınızın, hatta Windows makinalarınızın
bile (Linuxun yardımıyla) yedeğini alabilirsiniz. Bu iş
için amanda gibi daha özelleşmiş ve yedekleme işlemini
otomatikleştiren bir program kullanabileceğiniz gibi, GNU tardan da
yararlanabilirsiniz. Örneğin tar ile, cclub.metu.edu.tr makinasından,
linux.org.tr makinasındaki floppy teybe yedek almak için,
cclub:~# tar cvf linux.org.tr:/dev/ftape /home
yukarıdaki komutun çalışması için linux.org.tr
makinasının rootunun .rhosts dosyasında cclub makinasının
rootuna izin verilmiş olması gerekir. Bu işlem güvenlik
için sakıncalı olduğundan, bu iş için özel
bir kullanıcı açmak gibi bir yönteme başvurulabilir.
Örneğin linux.org.trda yedek adlı bir kullanıcı açtığımızı
düşünelim. Bu durumda yukarıdaki komutu,
cclub:~# tar cvf [email protected]:/dev/ftape /home
şeklinde yazabiliriz.
5.4 Sistemin Güncellenmesi
Tekrar Linux yüklenecek olan makina üzerinde halihazırda Linux
bulunmasının yararları olduğu gibi bazı sakıncaları
vardır. İlk olarak yararlarına değinmek gerekirse, yapılacak
aslında sadece işletim sisteminin bulunduğu bölümü
değiştirmektir. Takas alanının ayrılması, kullanıcı
alanının ayrılması gibi işlemler bu durumda önceden
yapılmış oluyorlar. Ancak yeni işletim sisteminin yüklenmesinin
bazı zararları da var.
Herşeyden önce çalıştığı bilinen bir
işletim sistemi yenisi ile değiştiriliyor. Gerçekten bunu
gerektirecek bir sebep olmadıkça bu tür güncellemelerden
kaçınılması veya en aza indirilmesi gerekir. Yeni bir sistem,
yeni bilinmeyenler ve az da olsa bile çalışmama riski getirecektir.
Eğer sistem üzerinde belirli hizmetler veriliyorsa o hizmetlere ilişkin
verilerin bu güncelleme esnasında yok olmamasına dikkat edilmeli.
Mesela makina bir web sunucu olarak kullanılıyorsa web dosyalarının
bir şekilde yeni sisteme aktarılması gerekecektir .
Benzer bir şekilde makinaya ait tanımların (/etc) ve standart
dağıtım dışında yüklenmiş paketlerin
önceden yedeklenmesi gerekir. Yoksa herşeye yeniden başlamak
gerekebilir.
Güncelleme için iki yöntem akla gelebilir, doğrudan yeni
sistemi eskisinin üzerine bindirmek veya eskisini silerek yeniden yüklemek.
Slackware sürümü için en sağlıklısı
eski sistemi silmektir. Çünkü değişik dağıtımlarda
dosya dağılımı farklılıklar göstere bilmektedir.
Bunun sonucunda bazı dosyalar birden fazla yerde gözükebilmektedirler.
Bir diğer sakınca ise setup yazılımının bazen
bu durumda şaşırabilmesi ve hata vermesi. Bazı ticari Linux
sürümleri (Red-Hat, Debian, Caldera gibi) eski sürümü
silmeye gerek bırakmadan sistemi güncelleme özelliğine sahipler.
Güncellemeniz gerekebilecek dizinler, /var/spool/mail, kullanıcı
dizinleri (root dahil), /usr altında gerekli dizinler,/var/adm/ ve /etc
olarak sayılabilir. Bazen /etc içinde yer alan dosyaların yeri
veya şekli değişmiş olabilir. Onun için en güvenlisi
teker teker dosyaları inceleyip kopyalamaktır. Belirli dosyaları
yeni sistemi kurduktan sonra hemen kopyalayabilirsiniz :
/etc/group
/etc/printcap
/etc/hosts ...
Daha önce shadow kullanmayan bir sistemden shadow sistemine geçiyorsanız,
/etc/passwd ve /etc/shadow dosyalarında gerekli değişiklikleri
yapmadan yeni yerine kopyalamayın.
5.5 Çekirdeğin Derlenmesi
Bu bölümde, çekirdeğin konfigürasyonu ve derlenmesi
için gerekli bilgiler vardır. Çekirdek derleme uzun ve zahmetli
bir işlemdir. Derleme aşamasını en kısa zamanda ve
en uygun yoldan gerçekleştirmek gerekir. Derleme işlemi, kullanıcının
önüne kafasını karıştıracak kadar çok
seçenek sunar.
Nedir bu çekirdek? Genel anlamda çekirdek, yazılımın
ve donanımın arasında bekleyerek iletişimi sağlayan
bir arabirimdir. Çalışan tüm programların ve süreçlerin
hafıza ile olan ilişkilerini düzenler. İşlemcinin gücünün
tüm bu programlar arasında adil bir şekilde dağıtımını
üzerine alır. Bu işlemleri kullanıcının haberi
olmadan her an durmaksızın yapar.
Çekirdek kaynak dosyaları diskte hatırı sayılır
bir alan tutar. Örneğin sürüm 2.0.20 yaklaşık
6Mb disk alanı kaplar. Açıldığı zaman ise toplam
kapladığı alan 24 Mb olur. Derleme aşamasından sonra
bu rakam 30 Mbyi geçer. Her eklenen aygıt sürücü desteği
bir miktar daha yer alır.
Kullandığınız sisteme göre çekirdeğin derlenme
süresi değişkenlik gösterir. 12 Mb 486DX4/100 makinasında,
5 dosya sistemi desteği, ağ desteği ve ses kartı sürücüsü
ile yaklaşık 30 dakika sürer. Aynı konfigürasyonu içeren
çekirdeğin derlenmesi ise daha güçsüz bir makina olan
8Mb 386DX/40 altında 1.5 saati bulur. Derlerken gidip çayınızı
için, biraz televizyon seyredin. Makinaniz 386 ise bir banyo alıp
dışarı çıkın, alışveriş yapın.
Çok ümitsiz bir durumdaysanız, yapılacak en iyi şey
en yakın bilgisayar satıcısına uğrayarak yeni fiyatları
sormak :-)
Çekirdek kaynak kodu , ODTÜ ftp arşivindeki adresinden veya tsx-11.mit.edu
adresinin yansısını tutan herhangi bir adresten alınabilir.
Bu dizin altındaki Linux sürümlerinin bir tanesini (v1.2, v2.0,
v2.1 gibi) seçtikten sonra altındaki dosyayı alabilirsiniz. Dosyanın
ismi linux-x.y.z.tar.gz yapısındadır.
Aşağıdaki örnekte ODTÜ ftp arşivinden 2.0.20 sürümünün
alınışı gösterilmektedir:
$ ftp ftp.metu.edu.tr
Connected to ephesus.cc.metu.edu.tr.
220-
220-Welcome to METU Ftp Site !
220-
220-All logins and transfers are logged with your hostname.
220-If you do not agree with this policy, please cancel now.
220-
220 ephesus FTP server (Version wu-2.4(5) Wed Jan 10 18:06:56 EET 1996) ready.
Name (ftp.metu.edu.tr:gorkem): ftp
331 Guest login ok, send your complete e-mail address as password.
Password:
230-##########################################################################
230-## Welcome to the Middle East Technical University Ftp Archive ##
230-##########################################################################
230-
230-
230-Hello [email protected] !
230-You are the 19. anonymous user.
230-Maximum number of users allowed is 100.
230-Local Time is Tue Nov 5 12:19:41 1996.
230-
230-Mirrored sites are placed under the directory /pub
230-This archive is maintained by [email protected]
230-You can reach this archive via FSP at port 21.
230-
230-You can reach public directories via "cd dirname"
230-command independent of your current location;
230-e.g. "cd linux" instead of "cd /pub/linux"
230-
230 Guest login ok, access restrictions apply.
ftp> cd /pub/linux/tsx/sources/system/
250-Please read the file README
250- it was last modified on Mon Sep 16 11:36:00 1996 - 50 days ago
250 CWD command successful.
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 66
-rw-r--r-- 1 ftpload ftp-adm 36981 Sep 16 12:36 CREDITS
drwxr-xr-x 3 ftpload ftp-adm 512 Oct 13 15:59 Historic
-rw-r--r-- 1 ftpload ftp-adm 12056 Sep 16 12:36 README
drwxr-xr-x 2 ftpload ftp-adm 512 Oct 14 11:47 SillySounds
drwxr-xr-x 2 ftpload ftp-adm 512 Oct 13 18:17 testing
drwxr-xr-x 2 ftpload ftp-adm 512 Oct 14 11:47 v1.0
drwxr-xr-x 2 ftpload ftp-adm 2048 Oct 31 21:55 v1.1
drwxr-xr-x 2 ftpload ftp-adm 1024 Jun 25 11:34 v1.2
drwxr-xr-x 2 ftpload ftp-adm 6656 Sep 27 04:24 v1.3
drwxr-xr-x 2 ftpload ftp-adm 1536 Nov 2 00:05 v2.0
drwxr-xr-x 2 ftpload ftp-adm 512 Nov 2 21:33 v2.1
226 Transfer complete.
ftp> cd v2.0
250 CWD command successful.
ftp> bin
200 Type set to I.
ftp> dir linux*
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 141009
-rw-r--r-- 1 ftpload ftp-adm 5859566 Jul 3 11:22 linux-2.0.1.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5940281 Jul 27 06:39 linux-2.0.10.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5952403 Aug 5 03:01 linux-2.0.11.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5954278 Aug 9 12:53 linux-2.0.12.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5981780 Aug 16 06:19 linux-2.0.13.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5984960 Aug 20 11:52 linux-2.0.14.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5986368 Aug 25 06:20 linux-2.0.15.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5990228 Aug 31 14:03 linux-2.0.16.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5991606 Sep 2 06:37 linux-2.0.17.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5993351 Sep 5 10:38 linux-2.0.18.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5997342 Sep 11 10:21 linux-2.0.19.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5861789 Jul 5 12:09 linux-2.0.2.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5997693 Sep 13 08:53 linux-2.0.20.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5999162 Sep 20 09:51 linux-2.0.21.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 6009488 Oct 8 13:02 linux-2.0.22.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 6010694 Oct 18 08:20 linux-2.0.23.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5931967 Jul 6 07:53 linux-2.0.3.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5926911 Jul 8 08:48 linux-2.0.4.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5927899 Jul 10 08:23 linux-2.0.5.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5929807 Jul 12 07:22 linux-2.0.6.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5931378 Jul 15 07:38 linux-2.0.7.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5936467 Jul 20 02:52 linux-2.0.8.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5939510 Jul 26 04:09 linux-2.0.9.tar.gz
-rw-r--r-- 1 ftpload ftp-adm 5843677 Jun 9 23:36 linux-2.0.tar.gz
226 Transfer complete.
ftp> get linux-2.0.20.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for linux-2.0.20.tar.gz (5997693 bytes).
226 Transfer complete.
5997693 bytes received in 136 secs (43 Kbytes/sec)
ftp> quit
221 Goodbye.
Sisteme root olarak giriş yapın ve /usr/src dizinine geçin. Linuxun
kurulması aşamasında çekirdekleri de kurmuş iseniz
bu dizinde linux isminde ve eski çekirdeğin kaynak kodlarını
kapsayan bir alt dizin göreceksiniz. Genellikle her kullanıcının
yaptığı, bu dizinin ismini o an çalışan çekirdeğin
sürümüne göre değiştirmektir. Çekirdek sürümünü
bulmak için ise uname -r komutunu kullanabilirsiniz.
$ uname -r
2.0.23
Bu komuttan çekirdeğin 2.0.23 sürümü olduğunu
anlayabiliriz.
Çekirdek kodunu içeren paketi açmadan önce /usr/src dizinine
kopyalayın, ve açmadan önce bu dizinde linux isimli bir dizinin
olmadığına emin olun. Şimdi /usr/src içinde iken sıkıştırılmış
çekirdek kodunu tar komutu yardımıyla açın.
# tar -zxf linux-x.y.z.tar.gz
Komutun işletimi bitince linux dizini oluşur. İlk defa derleme
işlemi yapacaksanız aşağıdaki komutları sırasıyla
yazın.
# cd /usr/include
# rm -rf asm linux scsi
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi
# cd /usr/src/linux
# make mrproper
Çekirdeğin Kurulması
LILO, bilgisayarın açılışı anında çekirdek
ile ilgili düzenlemeleri okur, buna göre hangi çekirdekten açması
gerektiğini anlar. Konfigürasyon dosyası biraz karmaşık
olmasına rağmen kullanım aşamasında büyük
yararlar sağlar. /etc/lilo.conf dosyasının içinde gerekli
olan kurulum bilgileri vardır. Bu dosyanın bir bölüm aşağıda
görülüyor.
image = /vmlinuz
label = linux
root = /dev/hda1
other = /dev/hda1
label = dos
table = /dev/hda
image = ibaresi kurulu olan çekirdeğe işaret eder. Çoğu
kullanıcı bu kısma vmlinuz yazar. label = bölümünde
hangi işletim sistemi veya çekirdek sürümünun açılışta
kullanılacağı yazılır. Hemen altındaki root bölümünde
ise label = kısmında seçilen işletim sisteminin hiyerarşik
sırada en üst dizin yapısı yazılır. Eski çekirdeğin
bir yedeğini alın ve yeni derlediğiniz çekirdeği image
= satırında belirtilen yere kopyalayın.
# cp zImage /vmlinuz
Şimdi LILO programını çalıştırın. Komut
satırında lilo yazmak yeterlidir. `* karakteri, çalıştırılacak
ilk çekirdeği veya sistemi gösterir.
# lilo
Added linux *
Added dos
LILO ve konfigürasyonu hakkında , daha fazla bilgi LILO-NASIL çevirisinden
alınabilir.
Yeni bir çekirdeği derledikten sonra LILO üzerinden ekleme yapmak
ve açılış anında kullanmak için /etc/lilo.conf
dosyasındaki
image = /vmlinuz
label = Linux
root = /dev/hda1
satırlarının kopyasını çıkarın, image
, label ve root yerine sırasıyla yeni derlenen çekirdeğin
sabit disk üzerindeki yerini, ismini ve Linux işletim sisteminizin
kök dizinini yazın. Bunlara ek olarak, açılış
anında bekleme sağlamak ve seçim yapabilmek için konfigürasyon
dosyasının başına delay = xxx ekleyebilirsiniz. xxx sayısı,
gecikme zamanı saniyenin onda biri olarak verilir. Bu sayede açılış
anında , örneğin shift tuşuna basılarak istenen çekirdeğin
ismi (label = satırında yazılan isim) seçilir ve çalıştırılır.
Çekirdeğin Yamanması (patch)
Çekirdeğin her yeni sürümüyle birlikte bir önceki
sürümünun yaması da gelir. Yamayı uygulamak, tüm
çekirdeğin tekrar derlenmesinden daha kolaydır. Örnek olarak,
elinizde 2.0.10 çekirdeği var ve ftp adresinde 2.0.11 sürümü
bekliyor. Halihazırdaki çekirdeği 2.0.11 sürümüne
yükseltelim:
Yamayı önce /usr/src dizinine kopyalayın. Bu dizin altında
iken
# zcat patch-2.0.11.gz | patch -p0
veya eğer sıkıştırılmış değilse
# patch -p0 < patch-2.0.11
yazın. Bu komutun ardından satırlar ekrandan kaymaya başlayacak
ve yama işlemi tamamlanacaktır. Satırlar bazen o kadar hızlı
kayar ki neler yazdığını bile göremeyebilirsiniz. Yamanın
başarılı bir şekilde tamamlandığından emin
olmak amacıyla, /usr/src/linux dizini altında .rej uzantılı
dosyalara bakın.
# find . -name *.rej -print
Komut, .rej uzantılı dosyalar bulursa yama işlemi tamamlanamamış
demektir. Eğer yama işlemi tamamlanırsa, sırasıyla
# make clean
# make config
# make dep
komutlarını yazın. Bu komutlarla ilgili detaylı bilgi önceki
konuda anlatılmıştır.
patch komutunun alabildiği bazı seçenekler vardır. patch
-s komutu oluşabilecek tüm hata mesajlarını ekrana yazar.
Diğer yama seçenekleri man patch yazarak görülebilir.
Birkaç yamanın ardından, .orig uzantılı dosyalar etrafta
dolaşmaya başlar. Bu dosyalar gereksizdir, büyük yer kapladıkları
için silinmeleri gerekir. Aşağıdaki komut yardımıyla
/usr/src/linux dizini altında .orig uzantılı dosyaları silebilirsiniz.
# find /usr/src/linux -name *.orig -exec rm -f {} ;
5.6 Modüller (Yüklenebilir Çekirdek Parçaları)
Linux işletim sistemi çekirdeğinin boyu genellikle 400-600Kb
arasındadır. Hantal çekirdeklerde bu sayı 800Kblara kadar
çıkabilir. Çekirdeğin boyunun büyümesi, sistemin
performansını olumsuz yönde etkiler. Özellikle bilgisiz
kullanıcıların gerekli gereksiz tüm desteği çekirdeğe
yüklemesi sıkça görülür. Bunun önüne
geçmek de deneyim ister.
Linuxa özgü özelliklerden birisi modüllerdir (yüklenebilir
çekirdek parçaları). Modüller sayesinde nadiren gerekli
duyulan bir çekirdek parçası sadece gerektiği zaman çekirdeğe
eklenir. Örneğin Java programlarını her zaman çalıştırmak
istemiyorsanız, bu desteği modül olarak derleyip bir kenara koyarsınız.
Ne zaman bir Java programı çalıştırılacaksa bu
modül hafızaya yüklenecektir.
Bir modül, çekirdeğin derleme aşamasında `M parametresiyle
tanımlanır. Her desteğin modülü henüz geliştirilmemiş
olmasına rağmen bu sayı gün geçtikçe artmaktadır.
İlginizi çekebilecek modüller arasında disket desteği,
yazıcı desteği, minix dosya sistemi desteği veya SCSI aygıt
sürücü desteği sayılabilir.
Bir modülü derledikten sonra modüle ait dosya /lib/modules dizini
altında yeralır. Burada istenilen bir modül
# insmod modul-ismi
komutuyla çekirdeğe eklenir. Modülü hafızadan çıkarmak
için
# rmmod modul-ismi
yazın. Hafızadaki modüllerin bir listesini görebilmek için
de lsmod komutu kullanılabilir.
kerneld komutu, arkaplanda çalışarak gerekli olan modülleri
anında yükler. Bu sayede çekirdeğe eklemek için insmod
komutuna gerek kalmaz. Ayrıca belirli bir süre içinde kullanılmayan
modülleri de çekirdekten atar.
5.7 Yeni Yazılımların Yüklenmesi
Linux işletim sistemi, benzerlerine nazaran çok büyük bir
hızla genişliyor. Her an yeni bir program, yeni bir yazılım
piyasaya çıkıyor ve bunları takip etmek de gittikçe
zorlaşıyor. Bir ftp adresini kontrol ettikten iki gün sonra tekrar
bakıyorsunuz ki üç-beş yeni yazılım gelivermiş.
Tabi ki her an her programı makinanıza indirip açmak zorunda
değilsiniz. Buna ne zamanınız, ne de sabit diskiniz yeter (Linuxun
sunsite arşivi 20GBtan fazla yer kaplıyor!). Öyleyse tespih çeker
gibi program indirmek veya varolan yazılımları güncellemek
komik olur. Sadece gereken zamanda gereken dosyaları makinanıza kurmalı
veya güncellemelisiniz.
Bu işlem çekirdek için de geçerlidir. Bazı çekirdek
fanatikleri çekirdeği çıktığı anda makinalarına
indirir ve derlerler. Linuxa çok önemli bir fonksiyon kazandırmayacaksa
her an çekirdek derlemek hem zaman kaybı olur, hem de derleme esnasında
sistemi yavaşlatarak diğer kullanıcıları kızdırır.
Kurmak istediğiniz ve ftp adresinden bulup getirilen dosya çok büyük
ihtimalle tar ve gzip ile arşivlenip sıkıştırılmıştır.
Bu dosyanın sonu genellikle tar.gz, tgz veya tar.Z ile biter. Dosya kaynak
koduyla veya çalıştırılabilir program olarak dağıtılıyor
olabilir . Her iki durumda da yapılacak işlemler birbirine benzer.
Öncelikle yazılımın açıldığı zaman
hangi dizine kendini yerleştireceğine bakmak gerekir. Bunu tar komutunun
-t seçeneği ile kontrol edin. compress ve gzip ile sıkıştırılmış
dosyalar için,
# tar -ztvf dosya.tar.gz
komutu kullanılabilir. Çok nadir durumlarda dosya, kendine ait bir
dizin yaratmaz, onlarca programı ve konfigürasyon dosyasını
bulunduğunuz dizine yazar. Karmaşıklık yaratan bu durumdan
ancak arşivi ayrı bir dizin altında açmakla kurtulabilirsiniz.
Linuxçular yeni bir yazılımı denemek istediklerinde arşivi
genellikle /usr/src veya /usr/local/src dizini altına kopyalarlar ve burada
açarak biraz sonra anlatılacak konfigürasyon işlemini uygularlar.
Derleme gerektirmeyen bazı programların ise doğrudan kök
dizinde açılmaları gerekebilir. Bu programlar açıldıkları
anda çalışmaya hazırdırlar.
/usr/src veya /usr/local/src dizini altına dosyayı açtıktan
sonra bol miktarda dosya ve dizinle karşılaşabilirsiniz. Buna
en iyi örnek Linux çekirdeğidir. Burada yeralan bazı anahtar
dosyalar yazılımın kurulması için hayati önem
arzeder.
Öncelikle README, README.linux ve varsa INSTALL dosyalarının
gözden geçirilmesi gerekir. Bunlar sırayla bir kullanıcı
olarak dosyaları nasıl kuracağınızı ayrıntılarıyla
söyler. Kurma aşamasında dikkat edilecek dosyalardan ilki Makefile
veya makefile dosyasıdır. Bu dosyanın içinde (nadiren) küçük
birkaç değişiklik yapmak gerekebilir. Diğer kontol edilmesi
gereken dosya ise varsa config.h dosyasıdır. Bunu da sistem gereksinimize
göre değiştirmelisiniz. Bazen başta derleyici olmak üzere
sistemdeki yazılımı baştan aşağı kontrol
eden programlar olabilir (configure gibi). Bunların da komut satırından
çalıştırılmaları gerekir. Varsa Makefile dosyasına
göre yazılımı kurmak için make komutunu kullanın.
make komutu kuruluma make all, make install gibi bazı parametreler alabilir.
make all, halihazırda yeralan tüm yazılımları kurarken
make install, bu yazılımı konfigürasyon dosyalarının
gösterdiği dizinlere yerleştirirler.
Çoğu büyük paketler, man dosyalarıyla birlikte gelirler.
Bunları da diğer man dosyalarının yanına (/usr/man)
koymak için ayrı bir make install.man türü komut kullanmak
gerekebilir.
Her durumda, mutlaka README dosyasını okuyun. Biraz sıkıcı
gelse de sizi zaman kaybından kurtaracaktır.
Slackware dağıtımını kullanıyorsanız, yüklenmiş
yazılımları silmek için 2 yolunuz var. Birincisi, root olarak
sisteme girip, istemediğiniz programları tek tek komut satırından
silebilirsiniz. Ama bu size önerebileceğimiz bir yol değil ve
çok fazla sakıncası var. Örneğin, programı silip,
ona olan bağlantıları unutabilirsiniz. Ya da tam tersi olabilir.
İkinci yol ve en geçerlisi, Slackware dağıtımı
ile gelen pkgtool programı kullanmanız. pkgtool seçenekleri arasındaki
remove package işinize yarayacaktır.
5.8 Sistem Açılış Dosyaları
Linux makinası açılırken onlarca dosyayı okur. Birkaç
dakika içinde çekirdeği hafızaya yükler, belirli dizinlerin
altındaki programları arkaplanda çalıştırır.
Sistem uyanırken hatırı sayılır nicelikte konfigürasyon
dosyası elden geçer. Açık bir işletim sistemini diğerlerinden
ayıran bir özellik de kullanıcının büyük
bir kolaylıkla bu konfigürasyon dosyalarını değiştirebilmesidir.
Sistem açılış dosyalarında , özellikle ağ
temelli dosyalarda değişiklik yapabilmek için TCP/IP konusunda
basit temelleri anlayabilmiş olmanız gerekir.
Açılış dosyalarında, tek bir kullanıcı için
veya sistemde hesabı olan herkese yönelik olarak değişiklik
yapmak mümkündür. Pek çok kullanıcı bu açılış
dosyalarıyla oynayarak Linuxu daha yakından öğrenme imkanına
sahip olur.
İnternet servisi veren bir makina bu servisini daemonlar aracılığıyla
yapar. Bir daemon, her makina tarafından bilinen bir port numarasını
açar ve dinlemeye koyulur. Eğer sorumlu olduğu port adresine
istek gelirse bu isteğe cevap vererek servise başlar.
Bash kabuğunun anlatıldığı konu içinde sisteme
girerken okunan dosyaları anlatmıştım. Sistemde yeralan
önemli dizinler de dosya sistemi yapısı konusunda detaylı
olarak belirtilmişti. Bu bölümde daemonlardan kısaca bahsedip
açılış anında çalıştırılan
programlara ve bunların konfigürasyon dosyalarına kısa bir
giriş yapılacaktır.
5.9 Linux Dosya Sistemi Yapısı
Bu bölümde Linuxun kullandığı dosya sistemi hakkında
bilgi verilecektir. Dosya sistemini oluşturan dizinler, kapsadıkları
dosyalar ve bunların Linux işletim sistemindeki görevleri de
kısaca belirtilecektir.
Bir işletim sisteminin dosya sisteminin performansı, hızı
ve buna benzer çeşitli özellikleri sistemin verimli ve kararlı
çalışması üzerinde doğrudan etkisi vardır.
Linux dizin yapısının geliştirilmesinde FSSTND (file system
standard) grubunun çalışmalarının payı çok
büyük oldu. Programcılardan oluşan grup, standartların
belirlenmesinde ve uygulama aşamasında Linux ile ilgilenenlere yardım
etti. 1993 yılında Olaf Kirsh, Linux haber grubuna yazdığı
bir e-postasında Linux dosya sistemi üzerindeki çalışmaların
tamamlandığını haber verdi.
Linux dizin yapısında bazı dizinlerin işlevi birbiriyle
aynıdır. Bu durum, özellikle birbirini takip eden iki Linux sürümünde
belirginleşir. Örnek olarak bir dağıtımda /usr/bin
dizini altında yeralan dosya, diğer sürümde /bin altına
yerleştirilebiyor.
Dosya sistemleri ve dizinler paylaşımlı olarak da kullanılabilir.
Birden fazla kişisel bilgisayarın bağlandığı ağda,
disk alanından yer kazanmak için bir makina sunucu (ana makina) olarak
tayin edilir. Ağ üzerindeki diğer makinalar da sunucu üzerindeki
diski paylaşır. Buna örnek olarak kullanıcı ev dizinlerinin
yeraldığı /home, çalıştırılabilir dosyaların
bulunduğu /usr, e-posta ve haber grubu bilgilerinin bulunduğu /var/spool/mail
ve /var/spool/news dizinleri verilebilir.
Kök dizini, kendisine bağlı diğer tüm dizinleri de
içerdiğinden, Linux dosya sisteminde önemli bir yere sahiptir.
Linux açılırken önce kök dizini /etc/fstab dosyasına
uygun şekilde bağlanır. Diğer dosya sistemlerinin onarımı
ve kontrolü için gerekli olan fsck programları, bu dizinde bulunmalıdır.
Benzer şekilde yedekleme için gerekli olan tar, zip, compress gibi
arşiv programlarına da kök dizin altından erişilebilmeli,
açılış esnasında hafızaya yüklenen çekirdek
de kök dizininde yeralmalıdır.
Bir programı yerine koymadan önce bazı "dengelerin"
gözönünde tutulmasında yarar vardır. Programlanan her
yazılımı kök dizinine koyarsanız, bir süre sonra
bu dosya sisteminin şiştiğini görürsünüz.
Kök dizinini başlangıçta küçük (20-30Mb kadar)
tutmak, geliştirilen programları daha önceden belirlenen başka
bir dosya sistemi altına koymak akıllıca olur. Bu yol, ağ
üzerinden genellikle paylaşımı mümkün olmayan
kök dizininin her makinadaki sabit diskte mümkün olan en az yer
işgal etmesini sağlar.
Sistemdeki önemli dizinlere göz atarsak,
/bin : Sistemin açılışı ve kontrolü için
gerekli komutlar. Hem kullanıcıların, hem de sistem görevlisinin
kullanabileceği dosyalar (kök dizinde ise fazla şişmemesi
koşuluyla) buraya atılabilir. Sadece root kullanıcının
ihtiyaç duyacağı init, getty, updatedb gibi programlar /sbin
veya /usr/sbinde durabilir. Bu dizinde bulunan dosyalara örnek olarak cat,
chgrp, chown, date, dd, df, ln, mkdir, mount, ps, rm, sh, su, sync ve umount
verilebilir.
/dev : G/Ç dosyaları. Linux çekirdeğinde desteklenen her
aygıta ait dosya /dev dizini altında bulunur. Kurulum anında
bu dosyalar yerine yerleştirilir, bu dosyaların silinmesi durumunda
/dev/MAKEDEV ile tekrar yaratılabilirler.
/etc : Sistem konfigürasyon dosyaları. Bu dizinde çalıştırılabilir
dosyalar bulunmamalıdır.
· · · skel : Buradaki dosyalar, kullanıcı hesabı
açıldığında kullanıcının ev dizinine
kopyalanır.
· · · rc.d : Bu dizinin içinde, init sürecinin başvurduğu
konfigürasyon dosyaları vardır. Bunlara "rc dosysları"
da denir.
· · · passwd : Kullanıcı veritabanı
· · · fstab : Linuxun açılışı esnasında
bindirilecek dosya sistemleri burada listelenir.
· · · group : passwde benzer şekilde kullanıcıların
gruplarını tutar.
· · · inittab : init daemon için konfigürasyon dosyası
· · · motd : Kullanıcı sisteme girdikten sonra ekranına
basılması istenen mesaj burada tutulur.
· · · profile : Kullanıcı sisteme girdiği zaman
çalıştırılan dosya (csh ve sh türevi kabuklar
için)
· · · shells : Sistemde kullanılabilecek kabuk isimleri
burada tutulur.
· · · login.access : login komutu için konfigürasyon
dosyası. Sisteme girişi kullanıcı bazında sınırlamak
için kullanılir.
/home : Kullanıcılara ayrılmış dizin. Başka şekilde
ayarlanmamış ise, açılan her hesaba ait kullanıcı,
burayı kullanır. Büyük sistemlerde, bu kısım alt
parçalara ayrılabilir (/home/ftpadm /home/ogrenci gibi)
/lib : Kütüphane dosyaları.
/mnt : Geçici mount edilen dosya sistemleri. Sadece bu iş için
kullanıldığından sistem görevlisine zaman kazandırır.
/proc : Süreç kontrollerini ve diğer sistem bilgilerini tutan
dosya sistemi. Bu dosya sistemi aslında disk üzerinde yer kaplamaz,
tüm dosyalar çekirdeğin bir uzantısı sayılabilir.
· · · cpuinfo : işlemci modeli, tipi ve performansını
bildirir.
· · · devices : Halihazırda çalışan çekirdek
içinde desteği bulunan aygıt sürücülerini listeler.
· · · dma : Hangi dma kanallarının kullanıldığını
belirtir.
· · · filesystems : Halihazırda çalışan çekirdek
içinde desteği bulunan dosya sistemlerini listeler.
· · · interrupts : Hangi kesintilerin kullanımda olduğunu
söyler.
· · · iports : Halen hangi giriş/çıkış
iskelelerinin kullanıldığını belirtir.
· · · kcore : Sistem hafızasının görüntüsü
/root : Sistem görevlisinin ev dizini. Mümkünse bu dizini sistemdeki
diğer kullanıcıların görmeyeceği şekilde
ayarlayın.
/sbin : Hayati sistem komutları. Bir zamanlar bu dosyalar /etc dizini altında
yeralıyorlardı. Sadece sistem görevlisinin ihtiyacı olan
komutlar, /sbin veya /usr/sbin içinde bulunur.
/tmp : Geçici dosyaların koyulduğu dizin. Belirli zaman aralıklarında
temizlenmelidir.
/usr : Diğer önemli sistem dosyalarını tutar. Bu bölüm
genelde en kalabalık dizindir, zira yeni kurulan tüm programlar buraya
konulur.
· · · X11R6: X Window sistemi bilgileri tutulur.
· · · doc: Belge ve dökümanlar, genellikle HOWTO ve
FAQ dosyaları.
· · · lib: Bazı kütüphaneler
· · · man: Man dosyaları
· · · src: Bazı kaynak dosyaları ve linux çekirdeğini
oluşturan kodları (/usr/src/linux) içeren dizin.
· · · sbin : Kök dosya sisteminde yeralması gerekmeyen
çalıştırılabilir sistem görevlisi dosyaları
· · · /var : Sürekli değişen sistem bilgileri
burada tutulur. İstisnalar dışında diğer makinalarla
paylaştırılmaz.
· · · adm: Sistem yönetimini ilgilendiren kayıtlar
· · · preserve : Sistemin göçmesinden sonra zarar görmesi
mümkün dosyaların kaydedildiği yer.
· · · spool : Sonra işlenecek olan veriler buraya atılır
(e-posta gibi)
Eğer sistem yöneticisi iseniz düzenli olarak dosya ve dizin yapısını
kontrol etmelisiniz. Örneğinn /tmp dizini normal kullanıcıların
kullanımına açık olduğu için çok kısa
bir sürede dolabilir. Burayı periyodik olarak silmek için find
komutu işe yarayabilir :
# find /tmp -atime +7 -exec rm -rf {} ;
Yukarıdaki komut, tmp dizini altında yeralan tüm dosyaları
kontrol edecek ve 7 günden daha eski dosyaları silecektir. Benzer
şekilde, kullanıcıların dosyalarının yer aldığı
/home dizini de çok kısa bir sürede dolmaya mahkumdur. Sistemde
ne kadar büyük sabit disk olursa olsun bir gün gelecek burası
dolacaktır. Periyodik olarak buraya da göz gezdirmek gerekir. Aşağıda
yeralan kısa program, /home dizininde yeralan kullanıcı dizinlerideki
disk kullanımını büyükten küçüğe
doğru disk isimli dosyaya yollayacaktır. Bu dosyanın incelenmesiyle
hangi kullanıcıları "cezalandıracağınızı"
görebilirsiniz :)
# du -skx /home/* | sort -rn > disk
du (disk usage), sistem kullanıcılarının sıkça
başvurduğu bir komuttur. Kullanılabilecek parametreler için
du(1) man sayfasına bakın.
UNIX, (ve dolayısıyla Linux) iki tip aygıt tanır. Bunlardan
ilki karakter aygıtları, başka bir deyişle veri alışverişini
bayt bazında yapan cihazlar, diğeri de blok aygıtları, yani
veri alışverişini blok cinsinden yapan cihazlardır. Karakter
aygıtlarına örnek olarak seri bağlanan cihazlar ve teypler,
disk aygıtlarına örnek olarak da diskler verilebilir. Bu cihazlardan
bir bilgi yazılıp okunduğunda dosya sistemi altında bunları
tanımlayan dosyalar (/dev/*) kullanılmış olur. Örnek
olarak bir yazıcıya bilgi göndermek için,
$ cat dosya > /dev/lp1
komutunu kullanabilirsiniz. Dosya, yazıcının anlayabileceği
bir yapıda olmalıdır (örneğin düz metin).
Her aygıt, bir dosya olarak dosya sisteminde kendine yer bulduğuna
göre hangi aygıt dosyalarının bulunduğunu görmek
mümkün olabilir.
$ ls -l /dev/cua0
crw-rw-rw- 1 root uucp 5, 64 Nov 30 1993 /dev/cua0
İlk kolondaki ilk karakter (c), bu dosyanın bir karakter aygıtına
ait olduğunu belirtiyor. Normal dosyalar için buradaki karakter -
olmalıydı. Benzer şekilde blok aygıtlar için ise b
kullanılr.
Aygıt sürücü desteği çekirdekte olmasa bile /dev
dizini altında genellikle tüm aygıt dosyaları bulunur. Bu
demektir ki /dev/sda dosyasına sahip olduğunuz halde bir SCSI sabit
diski sistemde takılı olmayabilir. Tüm aygıt sürücülerinin
bulunması, programların kurulumunu ve yeni donanımın eklenmesini
kolaylaştırır.
6. Bash Kabuğu
UNIX için geliştirilen en önemli ve en çok kullanılan
kabukların başında tcsh, bash (Bourne Again Shell) ve ksh (Korn
Shell) gelir. Bash, Bourne Shellin biraz daha geliştirilmiş sürümüdür.
Tcsh ise C-shell üzerine eklenen yeniliklerle genişletilmiştir.
Unix altında, bash kabuğu diğer benzerlerine nazaran daha fazla
özelliğe ve işleve sahiptir. Linux işletim sistemi için
de derlenen bash ise hem tcsh, hem de kshdan özellikler taşır.
Bir Slackware dağıtımında tüm bu kabuklar kullanıcının
hizmetine sunulmuş olup bash kabuğu sistem ilk açıldığında
tanımlıdır. Kullanıcı sisteme girdiği zaman bu
kabuk aktif olur, bundan sonra kullanıcı herhangi bir kabuk altında
çalışmalarına devam edebilir. Bunun için sadece ismini
komut satırında yazması yeterlidir.
6.1 Bash Özellikleri
Bashin kullanıcıya zaman kazandıran en önemli özelliklerinden
birisi de dosya isimlerini tamamlamasıdır. Komut satırında
tamamlanmamış bir komut veya dosya ismi yazdıktan sonra TAB tuşuna
basılırsa satır tamamlanacaktır. Eğer komut satırındaki
karakter kümesiyle başlayan birden fazla komut varsa bir sinyal sesi
duyulacak ve sizden yeteri kadar karakteri yazmanızı bekleyecektir.
$ ls
postgres mandel.doc lilo-howto
$ vi post <TAB>
$ vi postgres
Komut satırındaki karakterler dosyayı veya komutu tanıtmaya
yetmiyorsa, <TAB> tuşunun iki kez ard arda basılmasıyla
ekrana mümkün olan tüm dosya isimleri getirilebilir.
$ ta <TAB> <TAB>
tac tail talk tar
$ talk
Bash, komut satırında iken satırın kolayca değiştirilebilmesini
sağlar. Böylece komut çalıştırılmadan önce
birkaç tuş darbesiyle üzerinde değişiklik yapılabilir.
Klavye üzerindeki alt ve üst yön tuşları, daha önce
yazdığınız komutları görmenizi ve arasında
seçim yapmanızı sağlar. Sağ ve sol yön tuşları
ile seçtiğiniz komutun üzerinde değişiklikleri uygulabilirsiniz.
6.2 Takma Adlar (alias)
Alias komutu ile bir komut veya komut kümesinin yerine bir isim tahsis
edilebilir. İşleyişi bir makroya benzeyen bu komut yardımıyla
uzun komutlar, daha kısa komutlarla tanımlanabilir. Bir alias komutu
, anahtar kelimeyle başlar, ardından bir eşittir (=) işareti
ve yerine kullanılacağı komut yazılır. Arada boşluk
bırakılmaz.
$ alias dir=ls -al
$ dir
total 668
-rw-r--r-- 1 gorkem users 1016 Dec 7 13:51 .profile
-rw-r--r-- 1 gorkem users 277 Nov 26 13:02 .signature
drwxr-xr-x 4 gorkem users 1024 Dec 3 18:24 .tin/
drwxr-xr-x 2 gorkem users 1024 Nov 12 10:58 .wine/
-rw-r--r-- 1 gorkem users 231 Nov 23 17:40 .xinitrc
drwxr-xr-x 2 gorkem users 1024 Oct 3 16:17 Mail/
-rw-r--r-- 1 gorkem users 26721 Dec 3 14:55 NIS-HOWTO
drwxr-xr-x 2 gorkem users 1024 Nov 17 14:09 News/
Daha karmaşık alias lar da tanımlanabilir:
$ alias yedek="cd /var/log; tar -zcvf yedek.tgz cron debug lastlog; cd
-"
6.3 Özel Kabuk Tanımları
Bazı özellikleriyle bash, benzeri kabuklar arasından kolayca
sıyrılır. Bunlardan birisi de tanımlardır. Tanımlamalar
set komutu yardımıyla yapılır, tüm tanımlar küçük
harflerle yazılırlar, bu özellikleri yardımıyla değişkenlerden
ayrılırlar.
$ set -o tanim # tanimi isletir
$ set +o tanim # tanimi kaldirir
Aşağıda en çok kullanılan iki tanım yeralmaktadır:
noclobber : Bu tanımın seçilir kılınmasından sonra
bir komutun çıktısı bir dosyaya gönderildiğinde,
dosyanın eski içeriği aynı kalır. Bu tanım sayesinde
kazara bir dosyanın üzerine başka bilgilerin yazılması
önlenebilir.
$ ls -al dosya
-rw-r--r-- 1 gorkem users 1409 Nov 29 13:58 dosya
$ set -o noclobber
$ ls > dosya
bash: dosya: Cannot clobber existing file
ignoreeof : ignoreeof, kabuktan control-d tuş takımı ile çıkılmasını
engeller. Yanlışlıkla basılan control-d ile sistemden anından
çıkmak mümkün olduğu için kullanışlı
bir tanımdır.
$ set -o ignoreeof
$ (control-d ye basin)
Use "logout" to leave the shell.
$ set +o ignoreeof
$ (control-d ye basin, sistemden hemen cikar)
$ ignoreeof=4
Yukarıdaki son örnekte 4 kere control-d tuşuna basılırsa
kabuktan çıkılır.
6.4 Özel Kabuk Değişkenleri
Sisteme girdiğiniz zaman Linux size bir kabuk tahsis eder ve kabuk üzerinde
değişkenler tanımlayabilmenize izin verir. Kabuk içinde
bir kabuk programı (script) çalıştırılınca
sistem tarafından bir alt kabuk daha yaratılır. Bu andan itibaren
iki kabuk çalışır, birisi sisteme girdiğiniz anda tahsis
edilen, diğeri de programın çalıştırılabilmesi
için sistem tarafından çağırılan. Program bittiği
anda alt kabuğun işlevi sona erer ve sistem tarafından öldürülür.
Bir kabuk altında tanımlanan değişken o kabuğa özgüdür.
Bir kabuk altında erişilebilen değişkene diğer bir
kabuk erişemez. Fakat bash kabuğu altında bir çevre değişkeni
yaratılırsa, sistem tarafından her alt kabuğa bu çevre
değişkeni kopyalanır. Böylece bir değişken yaratılır,
ama her alt kabuk tarafından kullanılabilir. bash kabuğunda yaratılan
çevre değişkenlerinin normal değişkenlerden tek farkı,
bu değişkenin diğer alt kabuklar tarafından tanınmasıdır.
Bir çevre değişkeni belirtmek için export komutu kullanılır.
Aşağıdaki örnekte dosyam isimli çevre değişkeni
tanımlanıyor.
$ export dosyam="internet.97.txt"
$ echo $dosyam
internet.97.txt
Bu esnadan sonra tüm kabuklar altında bu değişken tanımlı
olacaktır.
env komutu yardımıyla sistemde öntanımı yapılan
veya sonradan tanımlanan tüm değişkenler ekrana listelenir.
$ env
HOME=/home/gorkem
SHELL=/bin/bash
LS_OPTIONS=--8bit --color=tty -F -b -T 0
PS1=h:w$
PS2=>
LOGNAME=gorkem
OSTYPE=Linux
Sisteme girdiğiniz anda tanımlanan bazı komutlar ve açıklamaları
aşağıda verilmiştir:
HISTFILE : Tüm yazdığınız komutlar .bash_history adlı
bir dosya içinde tutulur. Her kullanıcının kendi ev dizinleri
içinde kullanıcıya özgü bu dosyadan vardır. $HISTFILE
değişkeni ile dosyanın ismi değiştirilebilir.
$ echo $HISTFILE
/home/gorkem/.bash_history
$ HISTFILE="komutlar"
$ echo $HISTFILE
komutlar
PATH : PATH değişkeninde bir komut yazıldığı anda
sistem tarafından aranacak olan patika listesi görüntülenir.
Örnek olarak who komutu /usr/bin/ dizini altındadır ve bu bilgi
PATH değişkeninde saklı tutulur. Kullanıcının
yaptığı programları çalıştırabilmesi
için PATH değişkeninde bulunduğu dizini de tanımlaması
gerekir.
PATH değişkeninde her dizin iki nokta üstüste işareti
ile birbirinden ayrılır. Örnek olarak /usr/local/bin:/usr/bin
dizisi sırasıyla /usr/local/bin ve /usr/bin patikalarına karşılık
gelir.
Kullanıcı PATH değişkenine yeni girdiler ekleyebilir. Aşağıdaki
örnekte bunun nasıl uygulandığı görülüyor.
Kullanıcı kısaca PATH değişkeninin sonuna kendisinin
istediği patikayı veya patikaları ekler.
$ echo $PATH # PATH degiskenini ekrana bas
$ export PATH=$PATH:/usr/net # buna /usr/net patikasini ekle
SHELL : O an kullanılan kabuğun patika ismini verir. Kabuk programları
genellikle /bin dizini altında tutulurlar. Her kabuğun patika ismi
sistemdeki /etc/shells dosyasında bulunmalıdır.
$ echo $SHELL
/bin/bash
HOME : Kullanıcının ev dizinini gösteren patikayı ekrana
basar. Her kullanıcının ev dizini, sistemde hesap açılırken
sistem görevlisi tarafından belirlenir. Linux Slackware dağıtımı
altında bu dizin öntanımlı olarak /home dur. Aşağıdaki
örnek kullanıcının ev dizinine ait patikayı ekrana
basıyor.
$ echo $HOME
/home/gorkem
LOGNAME : Sistemdeki kullanıcı hesabınının ismini tutar.
Her kullanıcı için farklı bir değerde olur.
$ echo $LOGNAME
gorkem
TERM : Kullanıcının halen üzerinde çalıştığı
terminal tipini görüntüler. vi ve pico gibi editörler çalıştırıldıkları
anda TERM çevresel değişkenine bakarlar. Bu sayede ekran ile
ilgili bilgileri önceden düzenleyebilirler. Aşağıdaki
komut önce halihazırdaki TERM değişkenini görüntülüyor,
ardından değişkene başka bir değer atıyor.
$ echo $TERM
linux
$ export TERM=vt100
$ echo $TERM
vt100
PS1 ve PS2 : Ekranda komut satırının başına gelecek
olan karakterleri belirlerler. Komut isteminin en başındaki yazı
bu iki değişken yardımıyla değiştirilebilir. PS1,
birinci satırın karakterlerini tutarken satıra sığmayan
komutlar bir satır aşağı geçeceklerinden ikinci satırın
karakterlerini de PS2 belirler. Aşağıdaki satır, bu iki
değişkenin öntanımlı olan "$" işaretini
bir kelimeyle değiştiriyorlar.
$ export PS1=->
-> export PS2=>
->
Önceden tanımlanan kodlar yardımıyla komut satırı
değiştirilebilir. Her kodun başında karakteri vardır.
Bu kodların herbiri örneğin o anki saati, makinanın ismini
veya bulunduğunuz dizini ekrana yazabilirler. Örneğin h ve w
kodları sırasıyla çalışılan makinanın
ismini ve çalışma dizinini gösterirler. Bu örnekte
PS1 değişkeni bu iki kod yardımıyla değiştiriliyor.
$ export PS1=h:w$
linux:~$ # yeni komut satiri goruntusu
linux:~$ cd /tmp
linux:/tmp$ # calisma dizinini de gosteriyor
Aşağıda, sıkça kullanılan kodların bir listesi
görülüyor.
, saat
d , tarih
s , kabuk ismi
w , çalışma dizini
u , kullanıcı ismi
h , makina ismi
6.5 Döngüler
Diğer hemen tüm programlama dillerinin en büyük gücü
olan döngü işlemlerine kabuk altında da izin veriliyor.
Burada programcı tarafından en çok kullanılan 2 döngü
tipi anlatılacaktır: while ve for. while komutu her döngüde
bir denetleme mekanizmasını harekete geçirirken for döngüsü
daha değişik bir mantıkla çalışır.
while-do Döngüsü
Döngü bloğu while anahtar kelimesiyle başlar, ardından
gelen koşul sağlandığı sürece döngü
işletilir. Önce koşulun sağlanıp sağlanmadığına
bakılır. Döngüden çıkabilmek için mutlaka
döngü içindeki koşul ifadesinin değerini yanlış
yapacak bir durum oluşmalıdır, aksi halde sonsuz döngü
oluşur.
while kosul ifadesi
do
komutlar
done
if komutuyla birlikte kullanılan test komutu, while döngüsünde
koşul ifadesi olarak da yer alabilir. Aşağıda 1den 100e
kadar sayan ve ekrana basan bir döngü görülüyor.
#!/bin/bash
deger=0
while [ $deger -lt 100 ]
do
deger=$((deger+1))
echo $deger
done
Yukarıda kullanılan (( ve )) karakterleri arasına matematiksel
bir işlem getirilebilir. Bu özellik bash kabuğuna özgüdür.
for-do döngüsü
Bir liste dahilindeki tüm değerlere sırayla erişimi sağlar.
for komutundan sonra yeralan liste sırayla kullanılır ve herbirisi
için döngü çalıştırılır. Listenin
sonuna gelindiğinde ise döngüden çıkılır.
for degisken1 in deger1 deger2 ... degerX
do
komutlar
done
Aşağıdaki örnek bu döngüyü kullanarak ekrana
bir dizi kelime yazıyor. Döngü boyunca akasya, elma ve visne
kelimeleri "agac" değişkenine kopyalanıyor ve her döngüde
bu değişkenin içerdiği bilgiler ekrana yazılıyor.
for agac in akasya elma visne
do
echo $agac
done
for-do döngüsü, dosya isimleri üzerinde yapılan işlemlerde
de büyük kolaylıklar sağlar. Bunun için özel karakterlerden
yararlanmak da olasıdır. Örnek olarak * karakteri o anki çalışma
dizini içindeki tüm dosyaları seçer.
for a in *.pl ; do
file $a
done
7. Sed ve Vi
7.1 SED (Stream editor)
Metin dosyaları üzerinde sürekli işlem yapanlar için
sed ve vi hemen imdada yetişir. Bu iki programın yapabildiklerini
etkileşimli olarak bir metin editörü üzerinden gerçekleştirebilmek
de mümkündür. sed ve vi tam anlamıyla zaman kaybını
önleyen kullanıcı dostu iki uygulamadır. Yapısal olarak
diğer programlama dillerinden biraz farklı olduklarından öğrenmesi
biraz zaman alır. Buna rağmen eğer metin editörlüğü
işinizin bir parçası ise sed ve viı öğrenip bunlardan
verimli bir şekilde yararlanmanız uygun olacaktır.
Sed ve Özellikleri
Sed bir dosyadan veya standart girdiden(klavyeden) bilgi okur ve standart çıktıya
(ekrana) okuduğu bilgileri kullanıcının belirlediği
düzene sokarak yazar. Bu veriyi de kullanıcı genellikle bir dosyaya
yerleştirir.
Sed komut satırında iken veya bir kabuk programı içinden
kullanılabilir.
7.2 vi Editörü
Bir linux sistemde her kullanıcının zevkine hitap eden çeşitli
metin editörler vardır. Bunların arasında en çok kullanılan
ve standart olan ed ve vi, UNIX sistemler için özel olarak tasarlanmış
editörlerdir. vi kadar çok kullanılmasa da ed, pico ve joe da
büyük bir taraftar kitlesine sahiptir. vi ilk başta karmaşık
görünse de hızı ve verimi ile her kullanıcının
işini büyük ölçüde kolaylaştıracak bir
editördür. En çok kullanılan komut takımlarını
öğrendikten sonra vi ile aynı dili konuşuyor olduğunuzu
göreceksiniz.
via Başlangıç
PC editörlerin büyük çoğunluğunda klavye, editör
komutlarını almak ve basılan tuşları ekrana göndermek
için kullanılan iki gruba ayrılmıştır. Kullanıcı
aynı anda hem komut işletip hem de yazı yazabilir. Bu tip editörler
geniş bir klavye haritasına sahip oldukları için, örneğin
fonksiyon tuşlarını veya klavyenin en sağındaki nümerik
tuşları da kullanıyor olabilirler. vi ın tasarım aşamasında
bu durumdan kaçınılmış, standart dışı
klavyesi olan bilgisayarların da var olabileceği düşünülerek
klavye üzerinde kullanılması gereken tuşların sayısını
mümkün olduğunca indirilmesine çalışılmıştır.
Burada karşımıza vi editörünün çalışma
aşamasında üç ayrı işlev geliyor. Birincisi, bilgisayara
komutların girdisi sırasında kullanılan komut modu, ikincisi
yazı yazarken kullanılan yazı modu ve satır modu.
Komut modunda klavye üzerinde görevi olan tüm tuşlar, bilgisayar
komut vermek için kullanılıyor. Yazı modunda ise diğer
editörlerdekine benzer şekilde yazı yazmak mümkün oluyor.
Klavye modunu değiştirdiğinizde klavye tuşlarının
işlevleri de hemen değişiyor. vi editörünü ilk
çalıştırdığınız anda komut moduna girersiniz.
Bu anda her tuşa ait bir komut çalıştırılmaya
hazırdır (örneğin `j bir karakter aşağı,
`k bir karakter yukarı gider). Bu anda kullanıcı yazı moduna
geçmek isterse `i tuşuna basabilir.
Yazı moduna iken klavyeden girilen her karakter ekranda görünür.
Bundan sonrası daktilo kullanmaya benzer. Tekrar komut moduna geçmek
için ESC tuşu yardımcı olur. Bir dosya yazarken veya düzeltmede
bulunurken her iki yazım stili arasında sürekli gidip geldiğinizi
farkedeksiniz.
Bunlara ek olarak dosya işlemleri veya eşleme (substitution) yaparken
iki mod da kullanılmaz. Linux kullanıcısı vi üzerinde
çalışırken en alt satırda vi mesajlarını
görür ve gerektiği zaman satır modunda komutları girer.
Satır moduna geçmek için `: (iki nokta üstüste) karakteri
kullanılır. Bu tuşa basıldığında ekranın
en altında bir satır açılır ve vi sizden bir komut
girmenizi bekler. vi komutunu yazdıp entera bastıktan sonra tekrar
editör komut moduna geçersiniz.
8. TCP/IP
Diğer açık sistemler gibi Linuxun da en büyük özelliklerinden
biri ağ protokolleri ve uygulamalarının sistemin en doğal
parçalarından biri olmasıdır. Dolayısıyla ağ
yapısını bilmeyen bir yöneticinin, açık sistemler
üzerindeki bilgisini daha da geliştirebilmesi mümkün değildir.
Bu bölümde anlatılacaklar Linux üzerinde TCP/IPye bir giriş
yapılmasını sağlayacaktır. Ayrıntılı
bilgi TCP/IP servislerinin ve uygulamalarının anlatıldığı
diğer bölümlerden ve aşağıda sözü edilen
kitap ve dökümanlardan edinilebilir.
TCP/IP üzerine önerebileceğimiz bir kitap, ilk baskıları
TÜBİTAK tarafından bastırılan, ve büyük bir
okuyucu kitlesi bulmuş Herkes İçin İnternet (Kürşat
Çağıltay) tir. Bunun dışında İngilizce Prentice
Hall tarafından yayınlanan Internetworking with TCP/IP Volume I (D.E.
Comer), OReilly & Associates tarafından yayınlanan, TCPIP Network/
Administration (Craig Hunt) ve Linux Network Administrators Guide (NAG - Olaf
Kirsh). NAG, Linux Documentation Projectin bir parçası olduğundan
elektronik kopyası İnternet üzerinden ücretsiz olarak edinilebilir.
Linux Documentation Project grubunun hazırladığı NET-3-HOWTO,
TCP/IP temelleri ve ağ uygulamalarını örnekleriyle işlemiş.
Bu dökümanı nasıl temin edebileceğinizi kitabın
sonunda bulabilirsiniz. NET-3, TCP/IP ve buna bağlı protokollerin
Linux için geliştirilen bölümüne verilen isimdir.
8.1 Temel TCP/IP
TCP/IP, ilk defa ABDde ARPANet (Advanced Research Projects Agency Network) adı
altında, askeri bir proje olarak geliştirildi. Önceleri askeri
amaçlı düşünülen proje önce ünivesiteler
tarafından kullanılmaya başlandı. Ardından ABDnin dört
bir yanında birbirinden bağımsız geliştirilen ağlar,
tek bir omurga altında NSFNet olarak adlandırıldı ve ulusal
boyutu aşarak dünyaya yayıldı. İnternetin doğuşu
da bu tarihe denk gelir.
Bir sokak üzerinde yeralan evlerin adresleri gibi, İnternete bağlı
olan her makinanın da bir adresi vardır. Bu adres sayesinde bir bilgisayardan
diğerine ulaşmak mümkün olur. İnternet adresi 4 bayttan
(32 bit) ibaret olup yazılırken her bayt arasına bir nokta konulur.
En çok kullanılan bu gösterim şekline örnek olarak,
ODTÜdeki bir bilgisayarın adresi olan 144.122.199.20yi verebiliriz.
Bununla beraber, 4 baytlık numaraların kolayca hatırlanmasının
mümkün olmadığından, İnternet üzerindeki
makinalara alfanümerik adlar da verilebilir. Yukarıda örneğini
verdiğim adresin ismi, knidos.cc.metu.edu.trdır. ilk noktaya kadar
olan kelime, makina adıdır(yukarıdaki örnekte knidos), bundan
sonraki noktayla ayrılmış bölümler özelden genele
doğru makinanın ait olduğu kurum, kurumun tipi ve ülke gibi
bilgiler içerir. Bu adlandırma yöntemiyle ilgili ayrıntılı
bilgiyi Alan İsimlendirme Sisteminin (Domain Name System - DNS) anlatıldığı
bölümde bulabilirsiniz.
8.2 İnternet Adresleri
İnternet üzerinde 3 sınıf adres vardır. Avrupada RIPE
(Réseaux IP Européens) tarafından dağıtılan bu
adresler daha sonra o yerin ağ yöneticisi tarafından uygun şekilde
bölünebilir. Bu bölümlendirmeye ``subnetting işlemi
adı verilir. Bu sayede ağlar gruplanarak herbirisinin yönetimi
bağımsız hale getirilmiş, aynı zamanda da kısıtlı
olan IP adresleri daha verimli bir şekilde kullanılmış olur.
Üç çeşit İnternet adresi şunlardır :
· · · A sınıfı İnternet adresi: Adresin ilk
baytı 1 ile 126 arasında bir sayıdır. Bu adrese verilen
yetkiyle toplam 2^24 makina adreslenebilir. Dünya üzerinde 126 tane
A sınıfı adres vardır.
· · · B sınıfı İnternet adresi: Adresin ilk
baytı 128 ile 192 arasında bir sayıdan oluşur. Bu adresin
subnetlere bölünmesiyle 65534 farklı makina adreslenebilir.
· · · C sınıfı İnternet adresi: Adresin ilk
baytı 192 ile 223 arasındadır. C sınıfı bir adresi
blokuyla bağlı 254 bilgisayar adreslenebilir.
A ve B sınıfı adreslerin hepsi dağıtılmış
ve şu anda intenet C sınıfı adreslerde de sıkıntı
çekilmektedir. Adres yetersizliğine çözüm getirmek
amacıyla IPv6 ya da IPNG adlarıyla daha uzun İnternet adresleri
kullanan protokoller geliştirilme ve test aşamasındadır.
Bir İnternet adresi iki kısımdan meydana gelir: ağ adresi
ve düğüm adresi. Her makina, bir ağ üzerinde bulunur
ve bu adres ``ağ adresi olarak adlandırılır. Üç
sınıf (A, B ve C) İnternet adresinin ağ ve düğüm
adresleri farklı farklıdır. A sınıfı İnternet
adreslerinde ağ adresini 1 bayt tayin eder. Örnek olarak hayali yazılan
74.198.59.33 makinasını tanımlayan ağ adresi 74tür.
Ağ adresi uzun halde yazıldığı zaman kalan 3 baytın
yerine 0 konur. Bu durumda yukarıda adı geçen makinaya ait ağ
adresi 74.0.0.0 olacaktır.
Ağ adresinden geriye kalan düğüm adresi, bir makinanın
İnternet sınıfına göre 1,2 veya 3 bayttan ibaret olabilir.
Örnek olarak,
195.12.288.3 makinasının (C sınıfı) ağ adresi
195.12.288.0, düğüm adresi 3tür.
130.11.195.62 makinasının (B sınıfı) ağ adresi
130.11.0.0, düğüm adresi 195.62dir.
Düğüm adresleri yerine 4 baytı da kullanmak da olası.
Yukarıdaki iki örnek için düğüm adreslerini sırasıyla
195.12.288.3 ve 130.11.195.62 olarak kabul edebiliriz.
Yukarıda sözedilen subnetting (alt ağlara ayırma), çok
sıkça kullanılan bir yöntem olup getirdiği birtakım
kolaylıklar vardır. Büyük bir iletişim ağı
alt ağlara ayrılırsa, kontrol edilmesi daha kolaylaşır.
Bir kuruluş, kendine ait olan B sınıfı adresi subnetlere
bölmek isteyebilir. Gerekli düzenlemeleri yaparak bir B sınıfı
adresi (örneğin) 255 adet alt adrese ayırabilir. ODTÜnün
NICden aldığı 144.122.0.0 ağı, 254 parçaya bölünmüş,
bu parçalardan 144.122.71.0 alt ağı Bilgisayar Mühendisliği
bölümüne, 144.122.34.0 alt ağı Kimya Mühendisliği
bölümüne verilmiştir. Bundan sonra her bölüm kendi
ağı ve üzerindeki makinalardan sorumlu olur.
8.3 Protokoller
Internet protokollerinin yaygınlaşmasındaki en önemli etkenlerden
biri herhangi bir ağ donanımına ya da firmaya özel olmamalarıdır.
Bilgisayarınız, işletim sistemiz ya da ağ bağlanma
yönteminiz ne olursa olsun intenete bağlamanız mümkündür.
İnternet protokolleri RFC adı verilen dökümanlarda açıklanır,
bu dökümanlar herkese açıktır ve ücretsizdir.
RFClere NIC ya da ODTÜdeki yansısından erişebilirsiniz.
Internet protokollerinin temeli Intenet Protocol (IP)dir. İnternet üzerinde
yönlendirme(routing) gibi temel ağ işlemlerinin gerçekleştirildiği
protokol katmanıdır. IP paketlerinin her biri kendi başlarına
aradaki ağ cihazları tarafından yönlendirileren paket içinde
belirtilen adrese ulaştırılır. Bu sırada fiziksel ağ
farklılıklarından kaynaklanan paket parçalanmaları(fragmentation)
ve bunların yeniden birleştirilmeleri aradaki ağ cihazlarının
aşırı yüklenmelerini önlemek gibi görevler de
IP katmanı tarafından gerçekleştirilir.IP bağlantı
temelli(connection oriented) bir ağ protokolü değildir. Bunun
yanı sıra IP paketlerin içeriklerinin doğruluğunu da
garanti etmez. IP katmanı sadece başlık kısmında oluşan
hataları bulur ve düzeltir. Internet üzerinde yönlendirme,
yukarida sözü edilen adreslerden yararlanılarak yapılır.
Kullanıcı uygulamalarının IP katmanına doğrudan
ulaşımları yoktur. IP ve uygulama programları arasındaki
bağlantıyı sağlayan iki protokol vardır: Transmission
Control Protocol (TCP) ve User Datagram Protocol (UDP). TCP, İnternet protokolleri
arasındaki en önemli protokollerden biridir (İnternet protokol
ailesi bu nedenle TCP/IP diye adlandırılır.). TCP, IP katmanının
sağlamadığı bağlantı temelli, güvenilir servisi
sağlar. TCP kullanarak ağ üzerinden veri aktaran programlar,
bir dosyadan okuyormuş ya da yazıyormuş gibi güvenle ağ
bağlantısını kullanabilirler. Arada oluşan hatalar
TCP tarafından onarılır. IP protokol katmanına uygulma programları
doğrudan erişemediklerinden, hata kontrolü ve bağlantı
gerektirmeyen ya da bu işlemleri kendileri gerçekleştirmek isteyen
uygulamalar UDP kullanarak ağ üzerinden iletişim sağlarlar.
Yukarıdaki protokollerin yanı sıra İnternet standardı
olmuş birçok uygulama protokolü de vardır. Bunlar arasında,
TELNET, FTP, SMTP ve HTTP gösterilebilir.
İnternet üzerinde paketler son makinaya ulaştıktan sonra,
ilgili uygulama programına ulaşabilmesi için port adı verilen
sanal numaralar kullnılır. Servis veren uygulamalar, önceden
belirlenmiş standart port numraları kullanırlar. Örnek olarak
SMTP 25 numaralı TCP portunu, talk ise 518 numaralı UDP portunu kullanır.
Sisteminizin kullandığı port numaraları ve bunların
isimlerini /etc/services dosyasından görebilirsiniz.
8.4 İnternete Bağlanma
Linuxu İnternete bağlamak ilk aşamada biraz zor görünse
de biraz teori, biraz pratik yardımıyla mantık kolayca anlaşılabiliyor.
Ağlar, bilgisayar sistemlerinde hata olma olasılığı
en yüksek, en çok sorunun çıktığı alandır.
Bu bölüm, özelde bir ethernet kartı ile bağlantı
yapıldığı varsayılarak anlatılmıştır.
Ancak anlatılan birçok kavram herhangi bir yapıdaki İnternet
bağlantısı için geçerli olacaktır.
8.5 Yönlendirme
Daha önce de belirtildiği gibi birden fazla ağa fiziksel bağlantısı
bulunan ve ağlar arası bilgi paketlerinin geçişine olanak
tanıyan araçlara yönlendirici (router) adı verilir.
İki ayrı ağda yeralan makinaların haberleşmesine imkan
tanıyan yönlendiriciler, kendilerine gönderilen paketleri bir
ağdan diğerine iletirler.
Herhangi bir ağ içerisinde yer alan makinalar aynı IP ağ
içerisinde bulunan makinalarla (ağ konfigürasyonları doğru
olduğu sürece) haberleşebilirler. Başka adreslere ulaşabilmek
için bulunulan ağ dışındaki ağlarla bağlantısı
olan ve o ağ üzerinde bulunan bir makina ile haberleşmeleri gereklidir.
Bu makina bilgisayar tanımlarında gateway (yönlendirici, arabirim,
arayol) olarak verilir.
Minimum yönlendirme, bir ağa bağlı olmayan makinalarda,
ifconfig yardımıyla yapılan yönlendirmedir. En çok
kullanılan statik yönlendirme çeşidinde, az sayıda
arayol ile dışarıya bağlı olan bir makinada, route
komutuyla yapılır. Aynı adrese ulaşan birden fazla arayol
olması durumunda ise, kendi yönlendirme tablosunu ağın durumuna
göre değiştirebilen dinamik yönlendirmeye başvurulabilir.
Linuxun yönlendirici olarak kullanılmasına bir örnek verilebilir.
Elimizde var olduğunu bildiğimiz iki ağ olsun. Bu ağlardan
birincisini, 144.122.71.0 ağı, diğeri de 144.122.1.0 ağı
olarak kabul edelim. 144.122.71.0 ağının İnternete bağlanabilmesi
için 144.122.1.0 ağına ulaşması gereklidir. Yönlendirici
olarak kullanılacak makinayı 71.0 ağında kurup gerekli yönlendirme
talimatları verildiği anda bu ağa bağlı olan diğer
makinalar da İnternete açılabilecektir.
8.6 NFS
NFS (Network File System), bir ağ üzerinden disklerin paylaşımını
sağlamak üzere geliştirilmiştir. NFS sayesinde bir makinada
yeralan belirli bir disk bölümü, başka makinalar tarafından
okunabilir veya yazılabilir. Bu işleme özellikle büyük
organizasyonlarda, disk alanından tasarruf etmek için başvurulur.
Her makinada aynı dosyalar, çalıştırılabilir programlar
olması yerine bunlar tek sunucuda toplanır, diğer bilgisayarlar
bu alanı ortaklaşa paylaşırlar. Paylaşılan dizin,
sanki yerel makinanın bir diziniymiş gibi davranır. Kendi disk
alanını paylaştıran makinaya NFS sunucusu, bu diske erişim
yapan makinalara da NFS istemcisi adı verilir.
NFS kullanımının pek çok avantajı sayılabilir.
Bunlar kısaca:
· · · Yerel bir işletmede tüm kullanıcılar
tek bilgisayar üzerindeki aynı disk alanını paylaşabilirler.
Diğer bilgisayarlar açıldıktan sonra bu diskleri kendi dosya
sisteminlerine bindirebilirler. NFSin NIS ile birlikte kullanımı sayesinde
bir kullanıcı herhangi bir makinaya girip diğer kullanıcılarla
birlikte aynı dosya yapısı ile çalışabilir.
· · · Paylaşım sayesinde büyük disk alanı
isteyen programlar tek bir sunucuda toplanabilir ve bu sayede önemli miktarda
diskten tasarruf sağlanabilir.
· · · Bir makina üzerinde yapılan değişiklik,
her makinada yapılmış gibi olur. Böylece aynı yazılımı
örneğin 20 bilgisayara yüklemek zorunda kalmazsınız.
8.7 Uzaktan Bağlantı Kurulması
İnternet üzerinde kesinlikle yanlız olmadığınıza
göre, kimi durumlarda kendi Linuxunuz dışındaki sistemlere
girmek isteyeceksiniz. Bunun için uyarlanmış çeşitli
komutlar mevcuttur. Bu komutlar sadece bağlanmak için değil,
iki makina arasında birtakım dosya transferi gerçekleştirmek
için de kullanılabilir.
Linux (ve UNIX) için ağ uygulamalarında kullanılmak üzere
geliştirilen temel olarak iki sistem vardır. Bunlardan UUCP (Unix
to Unix CoPy), genel olarak iki makina arasında bir kere bağlantı
kurup veriyi iletir ve bağlantıyı kapatır. Eski bir protokol
olan UUCP, genellikle modemler arası veri iletişiminde işe yarar.
TCP/IP ise daha önce de belirtildiği gibi yerel ağ veya İnternet
üzerinde rahatlıkla kullanılabilen bir protokoldür. TCP
/ IP nin uzaktan bağlantı komutları "r" harfi ile başlar.
Örneğin rlogin (remote login) bir sistemden diğerine telnet bağlantısı
yaparken rcp (remote copy) ise bir makinadan diğerine dosya kopyalar. Bu
ve buna benzer uzaktan bağlantı komutları iyi bilmeniz size çalışmalarınız
sırasında zaman kazandıracaktır.
"r" komutlarını kullanabilmeniz için kesinlikle TCP/IP
protokolünü tanıyan bir ağ (PPP, Ethernet, SLIP gibi) üzerinde
olmalısınız.
rlogin : Geçerli bir hesabınızın olduğu makinaya girmenizi
sağlar. telnet komutuyla benzerlik gösterir. Ayrıldıkları
nokta, karşıdaki sisteme girerken gerekli konfigürasyonlar yapılırsa
şifre sormamasıdır. Bu kısma ileride değineceğim.
Aşağıdaki komut ile ordek isimli makinaya giriş yapılıyor.
$ rlogin ordek
Eğer yukarıdaki gibi yazarsanız, ordek makinasına ait IP
numarası veya bu adresin tam isminin, örneğin ordek.cclub.metu.edu.tr/etc/hosts
dosyasında yeraldığına emin olmanız gerekir. Karşı
makinada bağlanılacak kullanıcı ismi de komut satırından
belirlenebilir.
cclub:~$ rlogin ordek -l httpd
Password:
Last login: Fri Feb 21 22:02:46 from cclub.metu.edu.tr
Linux 2.0.27.
ordek:~$
Yukarıda yaptığımız, cclub makinasından ordek
isimli makinadaki httpd kullanıcısına bağlanmak oldu. Üzerinde
Linux çalışan ordek makinası doğal olarak bana bu kullanıcıya
ait şifreyi sordu. ordek makinasında yeralan bir dosya üzerinde
değişiklik yaparak istersem şifre sorulmadan anında girilmesini
sağlayabilirim. Bunu .rhosts (remote hosts) dosyası sağlar.
.rhosts dosyasında makinaya bağlanabilecek olan kullanıcılar
ve bunların hangi makinalardan bağlanacaklarını gösteren
bir liste vardır. Biraz karışık mı oldu ? Şu örneği
inceleyelim :
ordek:~$ uname -a
Linux ordek 2.0.27 #1 Sun Jan 19 13:06:08 EET 1997 i486
ordek:~$ whoami
httpd
ordek:~$ cat ~/.rhosts
cclub.metu.edu.tr gorkem
Yukarıda ördek makinası üzerindeki httpd kullanıcısının
çalışma dizininde bulunan .rhosts dosyasında iki sütun
yeralıyor. İlki, güvenilen makinanın ismi (cclub.metu.edu.tr),
ikincisi de bu makina üzerindeki güvenilen kullanıcı (gorkem).
.rhosts dosyası şifrenizi başkalarına vermeden istediğiniz
makinadaki bir kullanıcının hesabınızı kullanmasını
sağlar. Kısaca bir satırda herhangi bir kullanıcının
makina ismi ve hesap ismi bu dosyada varsa, sisteme giriş izni verilir.
Bu aşamadan sonra cclub.metu.edu.tr adresindeki gorkem kullanıcısı
şifre girmeden ordek.cclub.metu.edu.tr adresindeki httpd kullanıcısı
olarak çalışmak isterse yapması gereken :
cclub:~$ whoami
gorkem
cclub:~$ rlogin ordek.cclub.metu.edu.tr -l httpd
Last login: Sun Feb 23 11:19:04 from cclub.metu.edu.tr
Linux 2.0.27.
ordek:~$
Artık ordek makinası üzerindeyiz. Şifre girmeden bir makinadan
diğerine atlamış olduk. .rhosts dosyasında eğer makina
ismi yerine "+" işareti kullanılırsa her makinanın
veya kullanıcı ismi yerine "+" işareti kullanılırsa
her kullanıcının giriş izni olduğu anlaşılır.
Makina isimleri yerine IP adreslerini de kullanabilirsiniz. Birkaç örnek
:
144.122.71.55 +
# (144.122.71.55 makinasi uzerindeki tum kullanicilara giris izni ver)
+ murat
# Butun makinalar uzerindeki murat kullanicilarina giris izni ver.
# (Cok buyuk bir guvenlik acigi)
rsh : Bazı durumlarda çalıştığınız makinada
dışındaki bir sistemde bir veya birkaç kısa komut çalıştırmak
isteyebilirsiniz. Örneğin karşı sistemde kimler, hangi işleri
yapıyor veya çalışma dizininde yeralan dosyaları görmek
gibi. Bütün bunlar telnet veya rlogin programına gerek duymadan
rsh (remote shell) ile yapılabilir. Tek şart, üzerinde komut
işletilecek makinadaki .rhosts dosyasında gerekli makina ve kullanıcı
ismi girişi olmasıdır.
Diyelim ki davul.cclub.metu.edu.tr makinası üzerindeki /home/gorkem
dizininde yeralan tüm dizin ve dosyaları görmek için :
$ rsh davul.cclub.metu.edu.tr ls -al /home/gorkem
komutunu girmelisiniz. rsh komutundan sonra uzaktaki sistemin ismi, ardından
da çalıştırılacak olan komut gelmelidir. Diğer
bir örnek
$ rsh davul.cclub.metu.edu.tr cat README | lpr
karşı sisteme giriş yapmadan README dosyasını yazıcıdan
çıkmasını sağlayacaktır.
8.8 NIS
NIS Network Information Service kelimelerinin baş harflerinden oluşmaktadır.
Amacı bir ağ üzerindeki bütün makinalara, bütün
ağ tarafından bilinmek kaydıyla bilgi akışı sağlamaktır.
NIS tarafından dağıtılacak bilgiler, hesap isimleri, şifreler,
kullanıcı dizinleri ve grup bilgileri olabilir.
NIS yardımıyla, örneğin size ait şifre NIS veri tabanında
kayıtlı ise, ağ üzerinde NIS istemci programlarını
çalıştıran bütün makinalara girebilirsiniz.
NISin biraz daha gelişmiş bir sürümü olan NIS+ , verileri
korumak amacıyla şifreleme yöntemi kullanır. Bu avantajına
rağmen NIS+ ın kurulumu ve kullanımı daha zordur.
NISin Çalışma Prensipleri
Bir ağ üzerinde en az bir makina NIS sunucusu olmak zorundadır.
İster herbiri farklı NIS ``domain lerine hizmet eden çoklu NIS
sunucularına sahip olabilirsiniz, ya da beraber çalışan
NIS sunucularınız olur. Bu durumda sunuculardan biri ana NIS sunucusu,
diğerleri ise ikincil (slave) NIS sunucusu olabilirler.
İkincil sunucular sadece NIS veritabanının kopyalarına sahiptirler
ve bu kopyaları ana NIS sunucusunda bulunan veri tabanlarında değişiklik
yapıldığı zaman ana sunucudan alırlar. Ağ üzerinde
bulunan makina sayısına ve ağ güvenliğine bağlı
olarak bir veya daha fazla ikincil sunucu kurulabilir. Bir NIS sunucusu kapandığında
veya çok yavaş cevap verdiğinde, diğer NIS istemcileri çalışan
veya daha hızlı bir sunucu bulmaya çalışacaktır.
NIS veritabanları DBM adı verilen yapıdadır ve bu yapı
ASCII veritabanlarından çıkarılır. Ana NIS sunucusu
hem ASCII veritabanlarını hemde DBM veritabanlarını içermelidir.
NIS sunucusu, ASCII yapıdaki /etc/passwd gibi veri tabanlarını
DBM veri tabanına çevirerek /var/yp dizini altında tutar.
İkincil sunucular NIS haritalarında oluşacak değişikliklerden
yppush programı aracılığıyla haberdar edilecek ve veritabanlarını
senkronize etmek için otomatik olarak gereken değişiklikleri
alacaklardır. NIS istemcilerinin bunu yapmasına gerek yoktur çünkü
sunucudaki DBM veritabanlarında bulunan bilgileri okumak için devamlı
olarak NIS sunucusu ile bağlantı kurmaktadır. İkincil sunuculara
gayet büyük ağlar üzerinde ihtiyaç duyulur.
NIS İstemcisi
NISi kurmak için herşeyden önce /usr/sbin/rpc.portmap programını
çalıştırmanız gerekir. Bazı Linux dağıtımları
(örneğin Slackware) bu daemonu çalıştırmak için
gereken kodu /etc/rc.d/rc.inet2 dosyasında barındırırlar.
RPC portmapper (man 8 portmap) programı bir sunucu olup RPC program numaralarını
TCP/IP (veya UDP/IP) protokol port numaralarına çevirir. RPC portmapper
o makina üzerinde RPC çağrılarını (NIS istemci
yazılımının yaptığı iş) RPC sunucularına
(NIS sunucuları gibi) yapılabilmesi için çalışıyor
olmalıdır. Bir RPC sunucusu başladığı zaman, portmapa
hangi port numarasını dinlediğini ve hangi RPC program numaralarına
hizmet edeceğini bildirir. Bir istemci verilen bir program numarasına
RPC çağrısı yapmak istediği zaman, ilk önce sunucu
makina üzerindeki portmap ile bağlantı kurarak RPC paketlerinin
nereye gönderileceğini belirler. Normal olarak, bazı RPC sunucuları
inetd(8) tarafından başlatılır, bu yüzden portmap,
inetdden önce çalıştırılmalıdır.
NIS kurmadan önce, yukarıda da belirtildiği gibi iki durumu değerlendirmek
zorundasınız. Ya sizin makinanız halihazırdaki NIS sunucularının
bulunduğu bir ağın parçası olacaktır, ya da henüz
ağınızda herhangi bir NIS sunucusu yoktur.
Birinci durumda, sadece istemci programlara (ypbind, ypwhich, ypcat, yppoll,
ypmatch) ihtiyacınız vardır. En önemli program ypbinddır.
Bu programı her zaman çalıştırıyor olmalısınız.
ypbind çalışır çalışmaz, makinanız bir
NIS istemcisi durumuna gelir.
9. DNS (Alan İsimlendirme Sistemi)
9.1 Giriş
Bilgisayar ağlarının günümüzde oldugu kadar yaygın
olmadığı dönemlerde makina, sunucu, yazıcı vb.
ağ üzerindeki cihazlara ilgili nümerik adresleri ile erişmek
kullanıcılar için fazla zor değildi. İnternetin beklenenden
daha hızlı büyümesiyle birlikte artan kullanıcı
ve ağ üzerindeki cihazlarla birlikte nümerik isimler yerine alfanümerik
hatırlanması kolay bir yapı geliştirildi. Bu yapıya
Alan İsimlendirme Sistemi (Domain Name System) adı verilmektedir.
Genellikle kısaltılmış şekliyle DNS olarak da kullanılmaktadır.
Alan isimleri verilirken alt isimler (subdomain) genelden özele doğru
sıra izler. Örneğin, Türkiye Linux Kullanıcıları
Grubu olarak ODTÜde yer alan kullanıcıların kullanabileceği
alan adı,
metu.linux.org.tr
şeklindedir. Burda alt isim (.) ile birbirinden ayrılmıştır.
En alt seviye olan metu ODTÜde yer alan Linux kullanıcılarını,
linux Linux grubunu, org Linux grubunun ticari kaygılar gütmeyen bir
organizasyon olduğunu, tr ise ISO tarafından belirlenen Türkiyenin
ülke kodudur.
En üst düzeydeki bazı alan isimleri asağıda listelenmiştir.
.com ticari kuruluşlar (commercial)
.edu üniversite düzeyindeki eğitim kurumları (educational)
.k12 lise düzeyindeki eğitim kurumları
.org ticari olmayan organizasyonlar
.mil askeri kuruluşlar (military)
.net ağ organizayonları (network)
.ülke kodu ISO tarafından belirlenen ülke kodu
10. Diğer Kullanıcılarla İletişim
İnternet, başdöndürücü bir hızla gelişmekte.
Dünyada İnternete her gün onbinlerce kullanıcı eklenirken
İnternete bağlı Türk insanının sayısı
(şimdilik) yüzbinlerle ifade ediliyor. Bunda özellikle medyanın,
İnternetin tanıtımına yaptığı etki çok
büyük. Konuyla ilgili hemen her yazıda, bu dev ağın
diğer ucundaki kullanıcılardan bahsediliyor. İletişim
teknolojisiyle birlikte karşılıklı konuşmayı iyice
azaltan kesimlerin İnternete olan merakı da buradan geliyor.
Gerçekten de İnternete bağlandığınızda hiç
de yalnız olmadığınızı farkediyorsunuz. Biraz
merakla, biraz uğraşla dünyanın öteki ucundan bağlanan
insancıklarla bağlantı kurmak gayet kolay. İnternetle bilgisini,
kültürünü artıran, yalnızlıktan kurtulan,
hoşça vakit geçiren, hatta evlenenlere bile rastlanıyor.
Bazen de bunun tam tersine, hayal kırıklığına uğrayanlar
da var. Ama çoğunluk bu sonsuz derinliğe bir girdiği zaman
sihrinden kurtulamıyor.
Diğer kullanıcılarla iletişim kurabilmek için sayısız
yol yöntem var. Bunlardan en çok bilineni e-posta. Mektupla varışı
günlerce sürebilecek bir mesaj, e-posta ile gönderdiğinizde
bakmışsınız ki birkaç dakika sonra karşıda.
Bunun yanında haber gruplarına bağlanmak ve onbinlerce tartışma
grubundan hangisini okuyacağını şaşırmak da var.
İrc (internet relay chat) ile binlerce odalı bir eve girip her ülkeden,
her zevkte süresiz arkadaşlıklar kurmak mümkün.
Bunların hepsi Linux ile mümkün. Yazılımları kurduğunuz
anda yüzlerce ülkeden milyonlarca kullanıcı sizi ekran karşısında
bekliyor.
10.1 Etkileşimli İletişim Yöntemleri
Pine, kullanım kolaylığı ile kullanıcıya cazip
gelirken, atılan mesajların karşıya anınında gitmemesi,
hatta yolda kaybolması olasılığı bile vardır.
Buna karşın bir kere atıldığı zaman e-postayı
alan kişi bunu istediği zaman okur, yani e-posta atılırken
karşıdaki kullanıcının sistemde o an bulunması
şart değildir.
Write, talk ve irc, daha pratik ve anında iletişime izin veren programlardır.
write ile aynı makina üzerindeki kullanıcıyla anında
iletişim kurmak mümkün olur. Komut satırında write
ve konuşmak istediğiniz kullanıcının ismini yazmak
yeterlidir.
linux:~$ write gorkem
cok aciktim. yemege gidelim
Mesaj gönderme bittiği zaman Control-C yardımıyla çıkılabilir.
Aynı şekilde mesajı alan kullanıcı da write ile cevap
verebilir.
write, kısa süren mesajlaşmalarda etkili olurken uzun sürecek
konuşmalarda genellikle talk kullanılır. talk yardımıyla
mesajlaşan kullanıcıların herbirinin ekranları enine
ikiye bölünür. Ekranın bir yarısında gelen mesajlar,
öteki yarısında giden mesajlar görünür.
talk ve write genellikle iki kişi arasında iletişim kurmak için
kullanılır. Bunların yanında irc, aynı anda binlerce
kullanıcının bağlandığı bir dünyadır.
Uygun bir yazılımla dünyanın dört bir yanında
bulunan sunuculara bağlanmak suretiyle ircye girilebilir. Çok basit
birkaç komutla yüzlerce kanala girip her kanaldaki onlarca kişiyle
yazışmak olasıdır. İster özel mesaj gönderirsiniz,
ister belirli bir konuda yapılan konferansa katılırsınız.
Linuxunuzda irc yazılımı yoksa sunsite arşivinden alıp
kolayca kurabilirsiniz.
Written By X2 www.Cyber-Warrior.Org [email protected]