You are on page 1of 57

Open Source Enterprise Centre

GNU/Linux Sertifikasyon Program

Linux 102 Ders Notlar

Son Guncelleme: 9 Subat 2007


Icindekiler
1 Paylaslan Kutuphaneler 1
1.1 Paylaslan Kutuphanelere Giris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Dinamik olarak baglanms bagmllklar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Dinamik Yukleyici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.4 ldconfig Hakknda Ipuclar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.5 LD LIBRARY PATH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 UygulamalarKaynaktan Derlemek, Giris 2


2.1 DosyalarIndirmek (downloading) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Dosya Arsivleme ve Skstrmaya Iliskin Ksa Acklama . . . . . . . . . . . . . . . . . . . . 2
2.3 Paketi Acmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.4 Arsivleri Listelemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.5 bzip2 ile Skstrlms Arsivleri Acmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.6 bzip2 Boruhatlar(devam) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.7 KaynaklarIncelemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.8 Konfigurasyon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.9 configure Kullanmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.10 prefix Secenegi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.11 prefix Kullanmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.12 Peki ya FHS ne diyor? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.13 Configure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.14 config.cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.15 configure ve Makefile Dosyalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.16 Makefile Giris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.17 make ProgramnCagrmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.18 Kurulum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.19 make install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.20 Program bir defa yuklendikten sonra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.21 Iste bu kadar! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.22 OlasProblemler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.23 Eksik Kutuphaneler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.24 Diger Problemler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.25 Diger Problemler (devam) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3 Paket Yonetimi Kavramlar, Paket Yonetimi Avantajlar 8


3.1 Paket Yonetiminin Dezavantajlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4 rpm the (R)ed Hat (P)ackage (M)anager, rpme Giris 8


4.1 Bir rpm Yuklemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.2 Bir rpmi yeniden Yuklemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.3 Bir rpm i Zorlama ile Yuklemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.4 nodeps Secenegi Ile Yuklemek ve Kaldrmak . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.5 Paketleri Guncellemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.6 rpm -q Ile Sorgulama Yapmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.7 rpm -ql ile DosyalarListelemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.8 rpm -qp Ile Paketleri Sorgulamk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.9 Tum Kurulu Paketleri Sorgulamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.10 Bir Dosyann Sahibini Bulmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.11 BagmllklarGostermek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.12 Bir Paketin Butunlugunu Saglamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.13 Kurulmus Bir Paketin Kontrolunu Saglamak . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.14 rpmi Konfigure Etmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

5 Debian Paket Yonetimi, apt-get Giris 14


5.1 Taklit Kurulum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.2 Paket Kaynak Listesi: apt-setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.3 apt-getten dselecte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.4 dselecte Baslarken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.5 dselect Select Modunu Kullanmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.6 Paket Durumu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.7 Kurulum ve Konfigurasyon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.8 dpkg Ile Kurulmus bir Paketin Durumunu Ele Almak . . . . . . . . . . . . . . . . . . . . . 17
5.9 Bir dosya ile .deb Arasndaki Baglant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.10 Yuklenecek Paketleri Bulmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.11 Dpkg Ile Bir Paketi Konfigure Etmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.12 Ek Debian Paket Yonetim Araclar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

6 Huzurlarnzda cekirdek... Linux! 19


6.1 Donanm ile arabirim olusturmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.2 CPU Soyutlama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.3 IO(giris/cks)larSoyutlama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.4 Ag Merkezi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.5 Agn Faydalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.6 Acls islemleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.7 Ve huzurlarnzda... moduller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.8 Moduller nerede durur ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.9 Moduller her islem icin kullanlamaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

7 Cekirdek kaynaklarnbulup bilgisayarnza indirmek 20


7.1 Hangi cekirdek kaynaklarnkullanmal? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.2 Cekirdegi kaynagndan edinmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.3 Cekirdek kodu paketini acmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

8 Cekirdegi Duzenlemek 21
8.1 Yeni yontem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
8.2 Konfigurasyon ipuclar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

9 Cekirdegi derlemek ve kurmak 23


9.1 make bzImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
9.2 Modulleri derlemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

10 LILOda baslangc konfigurasyonu 23


10.1 LILOyu konfigure etmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
10.2 LILO kodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
10.3 LILO konfigurasyonunun nedenleri ve nicinleri . . . . . . . . . . . . . . . . . . . . . . . . . 24

11 PCI aygtlar 25
11.1 Mevcut PCI aygtlarnincelemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
11.2 PCI donanm kaynaklar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

12 Linux USB 26
12.1 USByi etkin hale getirmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
12.2 Son birkac adm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
12.3 usbdevfsyi baglamak (mount) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

13 Diff, Patch 27
13.1 Diff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

14 Cekirdegi yamamak (patch) 28

15 Kaynaklar 29

ii
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

16 TCP/IP Ag Islemlerine Giris 29


16.1 Cozum: Ethernet uzerinden TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
16.2 IP adreslerine giris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
16.3 IP adresleri ile Ethernet arayuzunu eslestirmek . . . . . . . . . . . . . . . . . . . . . . . . 31
16.4 ifconfig -a kullanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
16.5 TCP/IP calsyor! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
16.6 Isim cozumleme snrlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
16.7 DNS kullanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
16.8 Dsarya baglanmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
16.9 Ev odevi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

17 Internet servisleri ve inetdye giris 33


17.1 inetdyi ayarlamak: /etc/services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
17.2 inetdyi ayarlamak: /etc/inetd.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
17.3 Servisleri iptal etmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
17.4 inetdyi bir baslangc betigi ile baslatmak/durdurmak . . . . . . . . . . . . . . . . . . . . 34
17.5 inetdyi manuel olarak durdurmak/baslatmak . . . . . . . . . . . . . . . . . . . . . . . . . 35
17.6 TCP wrappersa giris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
17.7 TCP wrappers ile kayt tutma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
17.8 TCP wrappers kullanarak erisimi yerel kullanclar ile kstlamak . . . . . . . . . . . . . . 35
17.9 TCP wrappers ile sadece bilinen kullanclara izin vermek . . . . . . . . . . . . . . . . . . 36
17.10xinetd: gelistirilmis (extended) inetd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
17.11xinetd ayarlamas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

18 Guvenlige Genel Baks - Giris 37


18.1 Dosya izinleri ve log dosyalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
18.2 root kullancsnn diger dosyalarile ilgili izinler . . . . . . . . . . . . . . . . . . . . . . . . 37
18.3 Kullancdosyalarnn dosya izinleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
18.4 SUID/SGID programlarnbulmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
18.5 ulimit ile kullanclarn limitlerini ayarlamak . . . . . . . . . . . . . . . . . . . . . . . . . . 38
18.6 ulimit ile CPU zamannsnrlamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
18.7 Kullanclimitleri, devam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
18.8 Gizli girislerin engellenmesi (intrusion prevention) . . . . . . . . . . . . . . . . . . . . . . 39
18.9 Kullanlmayan ag servislerini kapatmak (supersunucu) . . . . . . . . . . . . . . . . . . . . 39
18.10Kullanlmayan ag servislerini kapatmak (tek basna calsan sunucular) . . . . . . . . . . . 40
18.11Degisiklikleri test etmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
18.12Bakm yaparken kullanclarn girisini engelleme . . . . . . . . . . . . . . . . . . . . . . . . 40
18.13iptables (ipchains) konusuna giris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
18.14iptables ve Linux paket filtresi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
18.15Gizli girislerin tespiti - syslog dosyalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
18.16Gizli giris tespiti - tripwire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
18.17Gizli giris tespiti - portsentry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
18.18Genel tavsiyeler: YazlmGuncel Tutmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
18.19Genel tavsiyeler: yuksek kaliteli parolalar . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
18.20Genel tavsiyeler : Guvenliginizi Test Etmek . . . . . . . . . . . . . . . . . . . . . . . . . . 43

19 Yazdrma Islemlerine Giris 43


19.1 Bir yazcspooler daemon kurulumu (lpd) . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
19.2 Temel yazcayarlar(/etc/printcap) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
19.3 Spool dizinlerinin yaratlmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
19.4 Yazdrma spooler istemcilerini kullanmak . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
19.5 Uzaktaki bir LPD sunucusuna yazdrmak . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
19.6 Uzaktaki bir MS Windows ya da Samba sunucusuna yazdrmak . . . . . . . . . . . . . . . 45
19.7 Magicfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
19.8 printcapi Magicfilteri gosterecek sekilde ayarlamak . . . . . . . . . . . . . . . . . . . . . 46
19.9 Magicfilter alternatifi olarak Apsfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
19.10Kaynaklar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
19.11Her sistem yoneticisinin duzenli olarak takip etmesi gereken en onemli siteler: . . . . . . . 47
19.12Etkilesimli, guvenli kabuk oturumu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

iii
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

19.13Guvenli kabuk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
19.14ssh kullanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
19.15sshd baslatmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
19.16Guvenli kopya . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
19.17Guvenli kabuk dogrulama ve yetkilendirme tercihleri . . . . . . . . . . . . . . . . . . . . . 48

20 NFS 49
20.1 NFSe giris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
20.2 Temel NFS bilgileri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
20.3 NFSin ozellikleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
20.4 Linuxta NFS, surum 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
20.5 NFSte guvenlik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

21 NFS kurulumu 49
21.1 /etc/exports uzerindeki duzenlemeler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
21.2 Ihrac kstlamalarile calsma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
21.3 Bir baska /etc/exports ornegi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
21.4 NFS3 sunucusunu calstrmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
21.5 Ihrac tercihlerini degistirme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
21.6 NFS istemcilerini yaplandrma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
21.7 NFS istemci servislerinin calstrlmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
21.8 Ihrac edilen NFS dosya sistemlerini baglama . . . . . . . . . . . . . . . . . . . . . . . . . . 52
21.9 Ihrac edilen dizinlerin icinde yaplan baglama islemleri . . . . . . . . . . . . . . . . . . . . 52

iv
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

1 Paylaslan Kutuphaneler
1.1 Paylaslan Kutuphanelere Giris
Linux sistemlerinde calstrlabilir iki cesit program tipi vardr. Birinci cesit programlar statik olarak
baglanms calstrlabilir programlar olarak adlandrlr. Statik calstrlabilirler (static executables) ih-
tiyaclar olan tum fonksiyonlar barndrrlar. Bir baska deyisle bunlar butun haldedirler. Bu yuzden
statik calstrlabilirler kullanlmak icin harici bir kutuphaneye ihtiyac duymazlar. Ikinci cesit ise dinamik
calstrlabilirler olarak adlandrlr. Bu ikinci tip programlara az sonra deginecegiz.
Statik Calstrlabilirler ile Dinamik Calstrlabirlerin Kyaslanmas Ilgili calstrlabilir programn
statik olup olmadgn ldd komutunu kullanarak anlayabiliriz.

# ldd /sbin/lilo
not a dynamic executable

ldd tarafndan bildirilen dinamik calstrlabilir degildir bilgisi bize lilo programnn statik baglantl
oldugunu anlatmaktadr.
Dinamik calstrlabilirler calsmalar icin gerekli fonksionlar almak icin paylaslms kutuphanelere
ihtiyac duyan, bir anlamda eksik programlardr. Bu yuzden ayn programa iliskin statik calstrlabilir
versiyonun boyutu dinamik calstrlabilir versiyonuna gore daha buyuk olacaktr.

1.2 Dinamik olarak baglanms bagmllklar


ln komutunun ihtiyac duydugu paylaslms kutuphanelerin listesini almak icin ldd komutunu kullanrz.

# ldd /bin/ln
libc.so.6 => /lib/libc.so.6 (0x40021000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Gordugunuz gibi, ln calsmak icin libc.so.6 ve ld-linux.so.2 kutuphanelerine ihtiyac duyar. Bir kural
olarak, az once de bahsettigimiz gibi dinamik olarak baglanms programlar statik olarak baglanmslara
gore cok daha az yer tutarlar. Ote yandan bir Linux sistemindeki hemen hemen butun calstrlabilir
programlar dinamik baglantldrlar.

1.3 Dinamik Yukleyici


Oyleyse, eger dinamik calsabilirler, calsmalar icin ihtiyac duyduklar herseye sahip degillerse Linuxun
hangi parcas gerektigi zaman bu programlarla birlikte gerekli kutuphaneleri yukleme gorevini ustlenir
? Bunun cevab dinamik yukleyici (dynamik loader) ad verilen bir kutuphane; yani ld-linux.so.2 dir (ln
komutunun bagml oldugu kutuphaneler arasnda gordugumuz gibi)
Simdi de dinamik yukleyicinin sistemdeki gerekli paylaslms kutuphaneleri nasl bulduguna bir ba-
kalm.

ld.so.conf

Dinamik yukleyici paylaslan kutuphaneleri /etc/ld.so.conf ve /etc/ld.so.cache dosyalar sayesinde


bulmaktadr. Eger /etc/ld.so.conf dosyasna cat komutu ile bakacak olursanz muhtemelen asagdaki gibi
bir liste ile karslasacaksnz:

$ cat /etc/ld.so.conf
/lib
/usr/lib
/usr/X11R6/lib
/usr/i486-linuxlibc1/lib

ld.so.conf dosyas dinamik yukleyicinin paylaslan kutuphaneler icin bakacag butun dizinlerin listesini
icermektedir (otomatik olarak yuklenen /lib ve /usr/libin yannda)

ld.so.cache

Ancak dinamik yukleyicinin bu bilgiyi gorebilmesi icin bu bilginin ld.so.cache dosyas icerisine donus-
turulmesi gerekir. Bu islem ldconfig komutu calstrlarak yaplmaktadr.

1
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

# ldconfig

ldconfig tamamlandktan sonra /etc/ld.so.conf ile yaptgnz tum degisiklikleri en son haliyle gosteren
/etc/ld.so.cache dosyasna sahipsiniz demektir. Bundan sonra dinamik yukleyici paylaslan kutuphaneleri
ararken artk sizin /etc/ld.so.conf dosyasna eklediginiz yeni dizinlere de bakacaktr.

1.4 ldconfig Hakknda Ipuclar


ldconfig komutunun gorebildigi tum paylaslan kutuphaneleri goruntulemek icin su sekilde yazmak gerekir:

# ldconfig -p | less

Paylaslan kutuphane yollarn konfigure etmek icin kullansl bir yontem daha vardr. Bazen dinamik
yukleyiciden paylaslan kutuphaneleri ararken /etc/ld.so.conf icerisinde yazl yollara bakmadan once
sizin belirlediginiz ozel bir dizin icerisine bakmasn isteyebilirsiniz. Bu yeni yuklenmis kutuphaneler,
calsmayan eski bir uygulamay kullanmak icin gerekebilir.

1.5 LD LIBRARY PATH


Dinamik yukleyiciye once belirli bir dizine bakmasn soylemek icin LD LIBRARY PATH degiskenini bu
istediginiz dizinler ile set etmeniz gerekir. Birden fazla sayda yolu ; ile ayrabilirsiniz. Ornegin:

# export LD_LIBRARY_PATH="/usr/lib/old:/opt/lib"

LD LIBRARY PATH degiskeni export edildikten sonra , o andaki kabukta baslatlan calstrlabilirler
eger mumkunse /usr/lib/old ya da /opt/lib altndaki kutuphaneleri kullanacaklar, olmazsa /etc/ld.so.conf
icerisinde belirtilen yollarda gerekli kutuphaneleri arayacaklardr.
Linux paylaslan kutuphaneleri ile ilgili genel bilgilerimizi burada noktalyoruz. Bu konuda ayrntl
bilgiyi man ldconfig ya da man ld.so komutlar ile ogrenebiliriz.

2 Uygulamalar Kaynaktan Derlemek, Giris


Diyelim ki elinizde sisteminize yuklemek istediginiz bir uygulama var. Bu uygulamann en yeni surumu-
nu kurmak istiyorsunuz. Ancak bu surum henuz rpm paket format haline gelmemis olsun. Uygulamay
sadece kaynak kod halinde bulabildiginizi dusunelim. Bu durumda yapmanz gereken sey bu uygulamay
kaynagndan derlemek olacaktr. Bu bolumde bu islemin nasl yaplacagn gorecegiz.

2.1 Dosyalar Indirmek (downloading)


Ilk isiniz derlemek icin ihtiyacnz olan kaynak dosyalar bulmak ve indirmek olacaktr. Bu dosyalar
muhtemelen tar.gz, tar.Z, tar.bz2 ya da tgz uzants halinde arsivlenmis ve skstrlms olarak bulacaksnz.
Arsivi, kullandgnz tarayc ya da ftp uygulamas ile indirmelisiniz. Eger uygulama ile ilgili bir web
sayfas varsa, kurulum bilgileri hakknda dokuman bulabilmeniz acsndan bu siteyi ziyaret etmekte fayda
vardr. Yukleyeceginiz program o anda sisteminizde olan ya da olmayan baska programlarn varlgn
gerektirebilir. Eger bu baska programlarn sisteminizde olmadgndan eminseniz oncelikle bunlar temin
etmeli, paket ya da kaynaklarnn kullanarak siteminize yuklemelisiniz. Bundan sonra asl uygulamanz
kurmak icin artk hazrsnz demektir.

2.2 Dosya Arsivleme ve Skstrmaya Iliskin Ksa Acklama


tar komutu yardmyla dosyalarnz arsivleyebilir, olusturulmus bir arsiv icerisine yeni dosyalar ekleyebilir
ve arsivleri acabilirsiniz. Asagdaki ornekte once /home/knoppix altnda temp adnda bir dizin ve bu
dizin icerisine file1, file2 adnda iki dosya ile dir1 adinda baska bir dizin ve en son olarak da bu dir1 dizini
icerisine de file1 adinda bir dosya acalm. Bundan sonra bu temp dizinini arsiv haline getirmek icin sunu
yazalm:

# tar -cf arsiv.tar ./temp


# ls
arsiv.tar Desktop temp tmp

2
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

Burada -c parametresi arsiv yaratlmas icin kullanlr. -f paramtresi de kendisinden sonra gelecek olan
ismi yeni arsivin ismi olarak alglar. Simdi yine /home/knoppix altnda temp2 diye bir dizin olusturalm
ve bu dizinin icerisine arsivi acalm:

# mkdir temp2
# ls
arsiv.tar Desktop temp temp2 tmp
# cd temp2
# tar -xf ../arsiv.tar
# ls
temp
# cd temp
# ls
dir1 file1 file2

Bu ornekte de gordugumuz gibi arsivimizi ayn sekliyle -x parametresi ile acms olduk. Simdi diyelim
ki arsivimize yeni bir dosya eklememiz gerekiyor. Bunun icin ilk akla gelen sey arsivi acp yeni dosyamz
ekleyip sonra yeniden arsivlemekse buna hic gerek yok. Cunku -r parametresi yardmyla arsivi acmadan
yeni bir dosya eklememiz mumkun:

# touch ekle.txt
# tar -rf arsiv.tar ekle.txt

Simdi de arsivimizde hangi dosyalarn bulunduguna -t parametresi yardmyla bir goz atalm:

# tar -tf arsiv.tar


./temp/
./temp/dir1/
./temp/dir1/file1
./temp/file2
./temp/file1
ekle.txt

Dosya skstrmaya yarayan araclardan en yaygn olanlardan birtanesi de gzip2dir. gzip ile bir dosyay
skstrabilir ve gunzip ile skstrlms dosyay acabilirsiniz:

# gzip ekle.txt
# ls
arsiv.tar Desktop ekle.txt.gz temp temp2 temp3 tmp
# gunzip ekle.txt.gz
# ls
arsiv.tar Desktop ekle.txt temp temp2 temp3 tmp
#

Sonuc itibariyle bir dizin icerisinde yer alan dosyalar en iyi sekilde paketlemek icin bunlar once
arsivlemek sonra da skstrmak gerekir. Az once olusturdugumuz /temp dizini bu sekilde uygun bir
tar.gz paketi haline getirelim:

# tar -cf arsiv.tar ./temp


# ls
arsiv.tar Desktop temp temp2 temp3 tmp
# gzip arsiv.tar
# ls
arsiv.tar.gz Desktop temp temp2 temp3 tmp
#

2.3 Paketi Acmak


Kaynak arsivi acmak nispeten daha kolaydr. Eger arsivinizin uzants tar.gz, tar.Z ya da .tgz biciminde
ise arsivi acmak icin su komutu kullanabilirsiniz:

$tar -xzvf archivename.tar.gz

x: acmak icin

3
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

v: gorunur durumda acmak icin (aclan dosyalar ekranda yazlr halde)

f: Bundan sonra aclacak arsiv dosya ismi yazlacag anlamna geliyor

Bundan sonra butun kaynak dosyalar tek bir dizin icerisinde yeralacak sekilde arsiv dosyas aclacaktr.
Bu sayede, bir arsivi actgnz zaman, o anda calstgnz dizin icerisine bu arsivde yer alan dosyalar
dolmayacak, onun yerine daha duzenli bir bicimde ayr bir dizin icerisine yer alacaklardr.

2.4 Arsivleri Listelemek


Calsmalarnz srasnda, acldg zaman calstgnz dizin icerisine yuzlerce dosya dolduracak bir arsivi
acmanz gerekecektir. Bir cok arsiv dosyas boyle aclmadg halde bazen bu durumla karslasabilirsiniz.
Eger arsiviniz acldgnda iceriginde yer alan dosyalarn hepsinin tek dizin icerisinde toplanacagndan
emin olmak istiyorsanz, arsivin icerigini asagdaki komut ile gorebilirsiniz:

$ tar -tzvf archivename.tar.gz | more

t: text listeleme icin. Herhangi bir acma islemi yaplmayacag anlamna geliyor.

Eger arsiv listesinin sol tarafnda ortak bir dizin belirtilmemisse, arsivinizi yeni acacagnz bir dizin
icerisine tasmanz ve acma islemini burada gerceklestirmeniz gerekmektedir. Aksi takdirde islem cok
karsk bir hal alacaktr.

2.5 bzip2 ile Skstrlms Arsivleri Acmak


Arsiv dosyanz .tar.bz2 formatnda olabilir. Bu uzantya sahip dosyalar bzip2 ile skstrlms dosyalardr.
Bzip2 genelde gzip den daha iyi bir skstrma yapmaktadr. bzip2 nin tek dezavantaj skstrma ve acma
islemini daha yavas gerceklestirmesi ve gzipin kullandgndan daha fazla bellek alan kullanmasdr. Ancak
yeni nesil bilgisayarlarda bu ayrnt artk onemsizdir. Zaten bzip2nin zaman gectikce daha populer olarak
kullanlmas da bu gercegi ispatlamaktadr.
bzip2nin artan ununden dolay bircok linux dagtm artk yamal halde tar versiyonlarn barn-
drmaktadr. Bu versiyonlarn kullanmnda y veya i secenegi ile tar uygulamasna dosyann bzip2 ile
skstrldgn ve acmak icin de yine bzip2 kullanacagn belirtebiliriz. Sahip oldugunuz tar uygulamasnn
yamal versiyonu olup olmadgn anlamak icin sunu yazn:

$ tar -tyvf archive.tar.bz2 | more

ya da

$tar -tivf archive.tar.bz2 | more

Bu komutlardan herhangi birisi calsmazsa (ve tar yanls parametre kullandgnz soyluyorsa)bile hala
yapabilecegimiz seyler vardr. Okumaya devam ediniz :)
bzip2 Boruhatlar Sizin tar uygulamanz ksayollar ile bzip2 dosyalarn acamyorsa ne yapmak gerekir?
Neyse ki sisteminiz GNU versiyonu tar uygulamas icermese bile bu isi yapabilmek icin nerdeyse tum
Unix sistemlerinde kullanlabilen kolay bir yol mevcuttur. bzip2 dosyasnn icerigini goruntulemek icin
bir boruhatt yaratabiliriz:

# ls
# cat ../arsiv.tar.bz2 | bzip2 -d | tar -t | more
./temp/
./temp/dir1/
./temp/dir1/file1
./temp/file2
./temp/file1
# cat ../arsiv.tar.bz2 | bzip2 -d | tar -x | more
# ls
temp
#

4
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

2.6 bzip2 Boruhatlar (devam)


Bundan onceki iki ornekte, arsiv dosyamzn icerigini goruntuleyen ve onu acan standart bir Unix bo-
ruhatt yarattk. tar uygulamas, kendisine stdin uzerinden gelen dosyay acarak disk uzerine degil onun
yerine more programna gonderdi.
Eger bu boruhatt yontemini kullandgnzda sistem bzip2 diye bir uygulamay bulamadgn bildi-
riyorsa muhtemelen bzip2 sisteminizde yuklenmemistir. Uygulama ile ilgili kaynaklar redhat.com1 ve
debian.org2 adreslerinde bulabilirsiniz. bzip2 nin sisteme kurulmasndan sonra (bu dokuman takip ede-
rek) ilk once kurmak istediginiz uygulamay acp kurma islemini tamamlayabileceksiniz.

2.7 Kaynaklar Incelemek


Kaynaklarnz actktan sonra acma islemini yaptgnz dizine girmek ve buradaki dosyalar kontrol etmek
isteyeceksiniz. Genelde kurulumla ilgili bir dosyay aramak akllca olacaktr. Genel olarak bu bilgiler
ana kaynak dizini icerisinde yer alan README ya da INSTALL dosyalar icerisinde yazldr. Pratikte
sizin calstgnz platforma ozel kurulum bilgilerini README.platform ya da INSTALL.platform (burada
platform kullandgnz isletim sistemini belirtiyor) dosyalarnda bulursunuz.

2.8 Konfigurasyon
Modern kaynaklarn bircogu ana kaynak dizini icerisinde bir konfigurasyon script dosyas barndrr. Bu
script ozel olarak kaynaklar kurmak icin tasarlanmstr. Boylece sisteminiz uzerinde bu kaynaklar duzgun
bir sekilde derlenir. Calstrldg zaman, script sisteminizi inceler yeteneklerini hesaplar ve kaynaklarn
kurulumu ve yuklenmesine iliskin komutlar barndran Makefile dosyalar olusturur.
Bu script her zaman configure olarak adlandrlr. Eger ana kaynak dizini icerisinde bir configure
dosyas bulursanz iyi bir ihtimalle bu dosya sizin kullanmanz icin oraya koyulmustur. Eger configure sk-
riptini bulamyorsanz, kaynak dosyalarnz muhtemelen cesitli sistemler uzerinde calsacak sekilde dizayn
edilmis standart Makefile dosyas ile gelmistir. Bu durumda bundan sonra gelecek olan konfigurasyon
admlarn gecip dokuman make hakknda konustugumuz yerden itibaren takip edebilirsiniz.

2.9 configure Kullanmak


configure skriptini calstrmadan once bu uygulama hakknda fikir sahibi olmakta yarar var. ./configure
help yazarak programnz icin mevcut tum konfigurasyon seceneklerini goruntuleyebilirsiniz. Ozellikle
help cktsnn en ustunde olanlar ve gordugunuz diger seceneklerin bircogu neredeyse her configure skripti
icerisinde yer alan standart seceneklerdir. Sonlarda yer alan secenekler ise sizin derlemek istediginiz pakete
ozgu seceneklerdir. Bu secenekleri incelemek ve hangilerini kullanp kullanmayacagmza karar vermek
gerekir.

2.10 prefix Secenegi


GNU autoconfige tabanl bircok configure scripti, program nereye kuracagnz kontrol etmenize olanak
saglayan prefix secenegine sahiptir. Ontanml olarak kaynaklarn cogu /usr/local dizini icerisine yukle-
nir. Bunun anlam binaryler /usr/local/bin, klavuz sayfalar /usr/local/man vb. seklinde dosyalarn
yerlestirilecegidir. Normalde bizim istedigimiz de budur; /usr/local icerisinde derledigimiz programlar
saklanacaktr.

2.11 prefix Kullanmak


Eger kaynaklar baska bir yere yuklemek isterseniz, (mesela /usr icerisine) prefix=/usr secenegini con-
figure scriptine gondermek gerekir. Ayn sekilde /opt dizini icerisine kurulum yapmak isterseniz de yine
configure scriptine prefix=/opt secenegini gondermemiz gerekir.

2.12 Peki ya FHS ne diyor?


Bazen bir program, kurulumda ontanml olarak dosyalarn disk uzerinde standart olmayan bir yere
koymak isteyebilir. Yani ozel olarak bir kaynak arsivi Linux Dosyasistemi Hiyerarsisine uygun olmayan
1 http://sources.redhat.com/bzip2
2 http://packages.debian.org/stable/utils/bzip2

5
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

kurulum yollarn kullanyor olabilir. Neyse ki configure scripti ile kullandgmz prefix secenegi sadece
kurulum yolunu degistirmemize izin vermekle kalmaz ayn zamanda klavuz sayfalar gibi cesitli sistem
parcalarnn da kurulum yolunu degstirmemize olanak saglar. Bircok kaynak arsivi henuz FHS uyumlu
olmadgndan, prefix seceneginin bu ozelligi cok kullansl olmaktadr. Muhtemelen her zaman kaynak pa-
ketinizi FHS uyumlu yapabilmek icin mandir=/usr/share/man ve infodir=/usr/share/info seceneklerini
configure scriptine gondermeniz gerekmektedir.

2.13 Configure
Degisik konfigurasyon seceneklerine bakp kullanacaklarnz sectikten sonra, configure programn cals-
trmann zaman gelmistir. Configure programn calstrrken, komut satrndan baz secenekler girmek
durumunda kalabileceginizi (genellikle ontanml secenekler calsr fakat bu tam istediginiz sonucu elde
edeceginiz anlamna gelmez) unutmaynz.
configure komutunu calstrmak icin

$./configure <secenekler>

$ ./configure

veya

$ ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-thr

seklinde yazabilirsiniz. Ihtiyac duydugunuz secenekler, konfigure edeceginiz belli paketlere bagmldr.
Configure, calstrdgnzda oncelikle bir sure icin sisteminizde hangi araclar ve hangi secenekler oldugunu
alglar ve bunlar ekrana basar.

2.14 config.cache
Konfigurasyon islemi sona erdiginde configure betigi, butun konfigurasyon verisini config.cache dosyasnda
depolar. Bu dosya configure betigi ile ayn yerde durur. Sistemde bir degisiklik yaptktan sonra eger
./configure komutunu tekrar calstrmanz gerekirse once rm config.cache dosyasn silmenizde fayda var,
aksi takdirde configure oncelikle bu bilgileri kullanacaktr.

2.15 configure ve Makefile Dosyalar


configure betigi calsmasn tamamladktan sonra kaynaklar derlemenin zaman gelmistir. make adnda
bir program kullanlarak bu adm gerceklestirilebilir. Eger yazlm paketinizde configure betigi varsa ve
bunu calstrdysanz, bu betik Makefile denilen ve sisteminiz icin ozellestirilmis dosyalar yaratacaktr.
Bu dosyalar make programna kaynaklar nasl kuracagn, binaryleri, klavuz dosyalarn ve destek dos-
yalarn nasl yukleyecegini anlatr.

2.16 Makefile Giris


Makefile dosyalar genel olarak makefile ya da Makefile olarak adlandrlr. Kaynak dosyalarn bulundugu
dizinde normalde bir tane makefile olacaktr. Hazr yaratlms Makefile dosyalar kullandgnz program
gibi hedeflerin tam olarak nasl kurulacag gibi kurallar icerir. make program tum komutlarn calsmas
gereken sray ve calsma sekillerini ortaya koyar.

2.17 make Programn Cagrmak


make programn cagrmak cok kolay bir islemdir. Calstgnz dizin icerisindeyken komut satrnda sadece
make yazmanz yeterlidir. Bundan sonra make program calstgnz dizinde yer alan makefile ya da
Makefile olarak adlandrlan dosyay bulacak ve yorumlayacaktr. Eger sadece make yazarsanz, program
ontanml hedefi kuracaktr. Program gelistiriciler normalde kendi makefile dosyalarn olustururlar ve
boylece ontanml hedef tum kaynag derleyecektir.

$ make

Baz makefile dosyalarnda ontanml hedef yoktur ve derleme isleminin baslamas icin sizin bir tane
belirtmeniz gerekir.

6
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

$ make all

Bu komutlardan bir tanesini yazdktan sonra bilgisayar programnz object koda cevirirken biraz
zaman gececektir. Hicbir hata olmadgn varsayarsak, bu asamadan sonra derlenmis programnz artk
sisteminize kurmaya hazrsnz demektir.

2.18 Kurulum
Program derlendikten sonra bir onemli adm daha kalms demektir: kurulum. Program derlenmis olsa bile
kullanma hazr degildir. Programn tum bilesenleri kaynak dizinden sistem uzerinde kullanlacag dogru
dizinler icerisine kopyalanmaldr. Mesela tum binary dosyalar /usr/local/bin ve tum klavuz sayfalar
/usr/local/man vb. dizinleri icerisine yuklenmelidir.
Yazlm kurmak icin root kullancs olmanz gerekir. Bunun icin sisteme en bastan root olarak gi-
rebilir ya da ayr bir terminalde su yazarak root kullancs olabilirsiniz. Bundan sonra o andaki kabuk
oturumundan exit yazarak ya da control-D ye basarak ckana kadar root haklarna sahipsiniz demektir.
Eger zaten root kullancs iseniz, kurulum islemine devam edebilirsiniz.

2.19 make install


Kaynaklar kurmak icin ana dizinde sadece asagdaki komutu yazmanz yeterlidir:

# make install

make install yazmakla, make programna install hedefini gerceklestirmesini anlatms oluruz. Bu
hedef geleneksel olarak en son yaratlan kaynak dosyalarn sisteminiz uzerinde dogru yerlere kopyalan-
mas icin kullanlr. Boylece program kullanlabilir hale gelecektir. Eger herhangi bir prefix secenegi
belirlemezseniz, buyuk bir ihtimalle bir kac dosya ve dizin /usr/local dizin agac icerisine kopyalana-
caktr. Programnzn buyuklugune bagl olarak kurulum hedefi tamamlanmas icin bir kac saniyeden
birkac dakikaya kadar zaman gecebilir.
Ayrca dosyalar kolaylkla kopyalamak icin, make install kurulan dosyalarn dogru izin ve sahiplik
haklarna sahip oldugunu da gozetecektir. make install basaryla tamamlandktan sonra program artk
yuklenmistir ve kullanma hazrdr (ya da neredeyse hazrdr.)

2.20 Program bir defa yuklendikten sonra


Program yuklendikten sonra ne yapmak gerekiyor? Tabi ki onu calstrmak gerekmektedir. Henuz yukle-
diginiz programn nasl calstrlacag konusunda bilgi sahibi degilseniz asagdaki gibi yazarak programn
klavuz sayfasn inceleyebilirsiniz:

$ man [program_ad]

Programnzn ancak baz gerekli ayar admlarnn gecilmesinden sonra calsmas da olasdr. Ornegin
eger web sunucusu yuklediyseniz, onu sistem acls srasnda da otomatik olarak calsacak sekilde ayarla-
manz ya da scriptlerin localhost altnda calsmas icin konfigurasyon dosyas icerisinde birtakm ayarlarn
yaplmas gerekir. Ayrca yine baz programlar icin de oncelikle /etc altnda yer alan programla ilgili kon-
figurasyon dosyasn da ayarlamanz gerekebilir.

2.21 Iste bu kadar!


Artk belirli bir yazlm paketini kendi kaynagndan yuklemis bulunuyorsunuz. Asagdaki sekilde yazarak
programnz calstrabilirsiniz:

$ program_ad

Tebrikler!

2.22 Olas Problemler


configure, make hatta make install betiklerinin bir hata ile donmesi cok karslaslan bir durumdur.
Asagdaki bolumlerde bu bilinen ortak problemlerden bahsedecegiz.

7
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

2.23 Eksik Kutuphaneler


Bazen belirli bir kutuphanenin eksik olmas yuzunden configure betiginin calsmadgn gorebilirsiniz.
Kurulum islemine devam edebilmek icin, o andaki kurulum islemini gecici olarak bir kenara brakp
programn ihtiyac olan bu kutuphaneler icin baz kaynak ya da binary paketleri bulmak gerekecektir.
Dogru kutuphane yuklendikten sonra configure ve make betikleri islemlerini tamamlayabileceklerdir.

2.24 Diger Problemler


Bazen nasl duzeltilecegini bilmediginiz problemler ile karslasabilirsiniz. Unix/linux konusunda tecrubeniz
arttkca configure ve make islemleri srasnda karslasacagnz anlaslmas daha zor gibi gorunen problem-
lere tan koyabileceksiniz.
Bazen yuklenen bir kutuphanenin cok eski ya da cok yeni olmasndan kaynaklanan hatalar olabi-
lir. Ya da program gelistiricilerinin yazdklar program sizin sisteminizde calsmayacagn ongorememis
olmasndan dolay bu tur hatalarla karslasabilirsiniz.

2.25 Diger Problemler (devam)


Bu tur problemler ile karslastgnzda en iyi nereden yardm alabileceginizi belirleyiniz. Eger bu sizin
program kaynagndan derlemek konusunda ilk denemeniz ise, once derlemesi sorunsuz olacak baska bir
program ile bu denemeyi yapmakta yarar vardr. Bu diger basit program bir defa derlediginizde asl
programn derlenmesi srasnda meydana gelen problemin hangi noktada oldugu konusunda fikir sahibi
olabilirsiniz.

3 Paket Yonetimi Kavramlar, Paket Yonetimi Avantajlar


Sisteminize bir yazlm yuklemek icin uygulamalar kaynaktan derlemenin yannda baska bir yontem
daha vardr. Yazlm paketlerini yuklemek, guncellemek ya da kaldrmak amacyla tum linux dagtmlar
belli sekillerde paket yonetimleri sunmaktadr. Paket yonetimi, uygulamalarn kaynaktan derlenmesine
kyasla baz avantajlar sunar:
* Kurulum ve kaldrma kolaylg * Mevcut kurulmus paketleri guncelleme kolaylg * Konfigurasyon
dosyalarnn korunmas * Yuklenen dosyalarnn takibinin basitlestirilmesi

3.1 Paket Yonetiminin Dezavantajlar


En populer paket yonetim araclarn kullanmaya baslamadan once paket yonetiminden hoslanmayan linux
kullanclarnn da oldugunu belirtmekte fayda var. Bu kullanclara gore:
* Belli bir sistem icin olusturulan Binaryler daha iyi performans gostermektedir. * Yuklenen bir
paketin ihtiyac duydugu kutuphanelerden arndrlms olmas ciddi bir sorundur * Paketlerin yaratlmas
oldukca zordur * Paket veritabannda meydana gelecek bir bozulma sisteme zarar verebilir
Sozkonusu olumsuzluklar olsa da bir cok kullancya gore paket yonetiminin avantajlar dezavantaj-
larna baskn gelmektedir. Ayrca yukarda bahsedilen her kusur icin de uygun bir karst fikir de mevcuttur.
Coklu paketler farkl sistemler icin optimize edilebilirler ve paket yonetici araclar da bagml kutupha-
neleri belirleyecek sekilde gelistirilebilir, veritabanlar diger dosyalara bagl olarak yeniden olusturulabilir
ve bir paketin yaratlmas icin basta harcanan efor paketin daha sonra guncellenmesi ve kaldrlabilmesi
kolaylg sayesinde hafifletilebilir.

4 rpm the (R)ed Hat (P)ackage (M)anager, rpme Giris


Red Hatin 1995 de rpmi ortaya koymas Linux dagtmlar icin cok buyuk bir adm oldu. Bu sadece Red
Hat linux uzerinde paket yonetimini saglamakla kalmayp sahip oldugu GPL lisans sayesinde ack kaynak
paketleme acsndan bir standart haline geldi. rpm icin cesitli grafik arayuzleri ve kullanm kolaylastran
araclar olsa da ontanml olarak komut satr uzerinde bir arayuze sahiptir. Bu bolumde ornek olarak
Xsnow programn kullanarak rpm icin en cok bilinen komut satr islemlerini inceleyecegiz.
Eger bundan sonrasn takip etmek istiyorsanz bircok rpm tabanl dagtm ile calsabilen asagdaki
rpmi indiriniz:

xsnow-1.41-1.i386.rpm

8
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

Not: Bu paketi indirmek isterseniz kullanabileceginiz kaynaklardan bir tanesi de rpmfind.net3 olabilir.
Not: Eger burada kullanlan cesitli rpm terimleri aklnz karstryorsa sunu hatrlaynz: bir rpm
bir rpm paketini temsil ederken rpm daima bir program anlatmaktadr.

4.1 Bir rpm Yuklemek


Simdi Xsnow rpmi rpm -i kullanarak yukleyebiliriz. Tabi bu islem icin oncelikle root kullancs olmak
gerekir:

$ su
Password:
# rpm -i xsnow-1.41-1.i386.rpm

Eger bu komut sonunda hic bir cks uretilmiyorsa komutumuz calsms demektir. X masaustunde
eglenmek istiyorsanz Xsnow uygulamasn calstrmanz gerekir. Kisisel olarak genelde bir rpm yukle-
digimiz gorsel bir geri besleme bekleriz. Bunun icin -h (islemi gosteren isaret) ve -v (gorunur mod)
seceneklerini kullanmamz gerekir:
Bunun icin once rpm2i kaldralm ve sonra -v ve -h secenekleri ile yeniden yukleyelim:

# rpm -iv xsnow-1.41-1.i386.rpm


warning: xsnow-1.41-1.i386.rpm: V3 DSA signature: NOKEY, key ID b1f6e46c
Preparing packages for installation...
xsnow-1.41-1
# rpm -e xsnow
# rpm -ivh xsnow-1.41-1.i386.rpm xsnow
warning: xsnow-1.41-1.i386.rpm: V3 DSA signature: NOKEY, key ID b1f6e46c
Preparing... ########################################### [100%]
1:xsnow ########################################### [100%]

4.2 Bir rpmi yeniden Yuklemek


Eger asagdaki komutu tekrar calstrrsanz, asagdaki gibi bir mesaj ile karslasrsnz:

# rpm -ivh xsnow-1.41-1.i386.rpm


warning: xsnow-1.41-1.i386.rpm: V3 DSA signature: NOKEY, key ID b1f6e46c
Preparing... ########################################### [100%]
package xsnow-1.41-1 is already installed

Bir rpm tekrar yuklemek isteyeceginiz durumlar olabilir. Ornegin /usr/X11R6/bin/xsnow binarysini
yanlslkla sildiginizde bu durum ile kars karsya kalrsnz. Bu drumda rpmi rpm -e ile kaldrp tekrar
yuklemelisiniz.

# rpm -e xsnow

Dikkat ediniz; birazdan goreceginiz ornekte rpm den gelen bilgi mesaj paketin sistemden silinmesine
engel teskil etmez. Cunku bu bilgiye gore paket zaten sistemde bulunmamaktadr.

# rpm -e xsnow
error: package xsnow is not installed

# rpm -ivh xsnow-1.41-1.i386.rpm


warning: xsnow-1.41-1.i386.rpm: V3 DSA signature: NOKEY, key ID b1f6e46c
Preparing... ########################################### [100%]
1:xsnow ########################################### [100%]

4.3 Bir rpm i Zorlama ile Yuklemek


Bazen sistemde bir programa bagl olarak calsan baska programlar varken, o program sistemden kal-
drmak zorluk yaratabilir. Ornegin Xsnow a bagl olarak calsan bir x-amusements rpmi yuklediginizi
varsayalm. Bu durumda rpm -e ile Xsnowu sistemden kaldramazsnz.
3 http://www.rpmfind.net

9
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

# rpm -e xsnow
error: removing these packages would break dependencies:
/usr/X11R6/bin/xsnow is needed by x-amusements-1.0-1

Bu durumda Xsnow uygulamasn force secenegi ile yeniden yukleyebilirsiniz. Simdi zaten yuklubir
paketi -force kullanmadan yuklemeye calsalm:
# rpm -ivh xsnow-1.41-1.i386.rpm
warning: xsnow-1.41-1.i386.rpm: V3 DSA signature: NOKEY, key ID b1f6e46c
Preparing... ########################################### [100%]
package xsnow-1.41-1 is already installed

Simdi de -force kullanalm:


# rpm -ivh --force xsnow-1.41-1.i386.rpm
warning: xsnow-1.41-1.i386.rpm: V3 DSA signature: NOKEY, key ID b1f6e46c
Preparing... ########################################### [100%]
1:xsnow ########################################### [100%]

4.4 nodeps Secenegi Ile Yuklemek ve Kaldrmak


force kullanmna alternatif olarak bagmllklar kontrol etmeden de rpmi nodeps secenegi ile sistemden
kaldrabilirsiniz. Bu kullanm da nadiren ise yarayabilir.
# rpm -e --nodeps xsnow
# rpm -ivh xsnow-1.41-1.i386.rpm xsnow

Bir rpmi yuklerken de nodeps secenegini kullanabilirsiniz. Aslnda duzgun kurulum ve kullanm
acsndan nodeps seceneginin kullanm pek tavsiye edilmese de bazen gerekebilir.
# rpm -ivh --nodeps xsnow-1.41-1.i386.rpm xsnow

4.5 Paketleri Guncellemek


Diyelim ki elinizde Xsnow 1.42 versiyonu icin yeni bir rpm olsun. Bu durumda mevcut kurulumunuzu
guncellemek isteyeceksiniz. Eger rpm -ivh force secenegini kullanrsanz kurulumu gerceklestirirsiniz.
Ancak bu durumda da rpm in kendi veritabannda her iki versiyonun da kurulu oldugu bilgisini bulacak
ve paketi ya iki defa kuracak ya da bununla ilgili bir caksma hatas verecektir.
# rpm -ivh xsnow-1.42-8.i386.rpm
warning: xsnow-1.42-8.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
file /usr/X11R6/bin/xsnow from install of xsnow-1.42-8 conflicts with
file from package xsnow-1.41-1
file /usr/X11R6/man/man1/xsnow.1x.gz from install of xsnow-1.42-8
conflicts with file from package xsnow-1.41-1

Bunun yerine kurulumunuz guncellemek icin rpm -U secenegini kullanmanz gerekir.


# rpm -Uvh xsnow-1.42-8.i386.rpm
warning: xsnow-1.42-8.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
1:xsnow ########################################### [100%]

Burada kucuk bir ipucu verelim: Genelde nadiren rpm -i secenegini kullanrz. Cunku rpm -U zaten
sistemde paket yoksa yine de kurulumu gerceklestirir. Ama -i seceneginden farkl olarak da eger paket
sistemde varsa varolan surumu gunceller. Bu kullanm ozellikle komut satrnda bazlar kurulmus bazlar
da henuz kurulu olmayan birden fazla paket yazdgnz zaman daha da kullansl olacaktr. Diyelim ki
sistemimizde sadece xsnow-1.41 versiyonu yuklu olsun. Simdi hem xsnow-1.42 hem de xfish tank rpmlerini
yuklemek icin -U secenegini kullanalm.
# rpm -Uvh xsnow-1.42-8.i386.rpm xfishtank-2.1tp-1.i386.rpm
warning: xsnow-1.42-8.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
1:xfishtank ########################################### [ 50%]
2:xsnow ########################################### [100%]

10
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

4.6 rpm -q Ile Sorgulama Yapmak


Orneklerde de farkedeceginiz gibi rpm kurulumunda paketler icin tam isim ancak rpm kaldrlmas
srasnda sadece isim yazlmaktadr. Bunun sebebi daha once de bahsettigimiz gibi rpmin kendi icerisinde
o anda kurulu olan paketlere iliskin bir veritabanna sahip olmasdr. Bu yuzden kurulu paketler icin sa-
dece isim kullanmak yeterlidir. Mesela rpme hangi Xsnow versiyonunun yuklu oldugunu soralm:

# rpm -q xsnow
xsnow-1.42-8

Aslnda rpm paketlerle ilgili olarak sadece isim ve surum bilgisinden daha fazlasna sahiptir. rpm -qi
kullanarak Xsnow hakknda daha fazla sey ogrenebiliriz:

# rpm -qi xsnow


Name : xsnow Relocations: (not relocateable)
Version : 1.42 Vendor: Red Hat, Inc.
Release : 8 Build Date: Mon 26 Aug 2002 11:51:09 PM EEST
Install date: Thu 22 May 2003 12:37:02 PM EEST Build Host: daffy.perf.redhat.com
Group : Amusements/Graphics Source RPM: xsnow-1.42-8.src.rpm
Size : 111829 License: MIT
Signature : DSA/SHA1, Wed 04 Sep 2002 12:45:26 AM EEST, Key ID 219180cddb42a60e
Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
URL : http://www.euronet.nl/~rja/Xsnow/
Summary : An X Window System based dose of Christmas cheer.
Description :
The Xsnow toy provides a continual gentle snowfall, trees, and Santa
Claus flying his sleigh around the screen. Xsnow is only for the X
Window System, though; consoles just get coal.

4.7 rpm -ql ile Dosyalar Listelemek


rpm tarafndan kullanlan veri taban cok fazla bilgi icermektedir. Yukarda da gordugumuz gibi burada
yuklenen paketin surumunu ve bununla iliskili diger bilgileri gozlemleyebilmekteyiz. rpm ayrca rpm -ql
kullanm ile verilen bir kurulu pakete ait dosyalar da listeleyebilir:

# rpm -ql xsnow


/usr/X11R6/bin/xsnow
/usr/X11R6/man/man1/xsnow.1x.gz
/usr/share/doc/xsnow-1.42
/usr/share/doc/xsnow-1.42/README
/usr/share/pixmaps/xsnow.png

Bu komutun cksn sadece konfigurasyon dosyalar ve dokumantasyon dosyalar ile snrlandrmak


isterseniz -c ve -d seceneklerini ekleyebilirsiniz. Bu kullanm uzun dosya listelerine sahip olan rpm ler icin
oldukca kullansldr. Biz bu kullanm Xsnow uygulamamz icin calstralm:

# rpm -qld xsnow


/usr/X11R6/man/man1/xsnow.1x.gz
/usr/share/doc/xsnow-1.42/README

4.8 rpm -qp Ile Paketleri Sorgulamk


Yuklemeden once eger rpm hakknda mevcut bilgiyi rpm -qi ile ogrenebilseydiniz bu paketi kurup kur-
mayacagnza karar verebilirdiniz. Ancak -qi ile sadece yuklu paketler hakknda ayrntl bilgi alabilmek-
teyiz. Aslnda rpm -qp bir rpm icin veritabann degil rpmin kendisini sorgulamaktadr. Bu ana kadar
gordugumuz tum sorgulamalar kurulu paketlere uygulanabildigi gibi benzer sekilde -p secenegi ile rpm
dosyalarna da uygulanabilir. Burada az once yaptgmz tum ornekleri bu sefer -p secenegi kullanarak
tekrar deneyelim:

# rpm -qp xsnow-1.42-8.i386.rpm


warning: xsnow-1.42-8.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
xsnow-1.42-8

11
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

# rpm -qpd xsnow-1.42-8.i386.rpm


warning: xsnow-1.42-8.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
/usr/X11R6/man/man1/xsnow.1x.gz
/usr/share/doc/xsnow-1.42/README

4.9 Tum Kurulu Paketleri Sorgulamak


-a secenegi kullanarak sisteminize yuklenmis tum paketleri sorgulayabilirsiniz. eger cks sort uzerinde
bir pager uygulamasna boru ile gonderirseniz sisteminizde hangi paketlerin kurulu oldugunu guzel bir
sekilde goruntuleyebilirsiniz. Ornegin:

# rpm -qa | sort | less

[burada cks yazmadk]


Simdi sistemimizde kac tane rpmin yuklu olduguna bakalm:

# rpm -qa| wc -l
641

Simdi de tum bu rpmlerin icerisinde kac tane dosya olduguna bakalm:

# rpm -qal| wc -l
97322

Bir ipucu: rpm -qa kullanarak coklu sistemler icin kullanm kolaylg saglanabilir. Eger sral cks bir
makinadaki dosyaya yonlendirip ayn isi baska makina icin de yaparsak, diff programn kullanarak hangi
paketlerin farkl oldugunu gozlemleyebiliriz.

4.10 Bir Dosyann Sahibini Bulmak


Bazen verilen bir dosyann hangi rpm2e ait oldugunu bulmak gerekebilir. Teorik olarak /usr/X11R6/-
bin/xsnow dosyasna hangi rpmin sahip oldugunu asagdaki gibi bir komut ile ortaya ckarabilirsiniz:
rpm -qf ile bir dosyann hangi rpme ait oldugunu sorgulayabilirsiniz.

# rpm -qf /usr/X11R6/bin/xsnow


xsnow-1.42-8

4.11 Bagmllklar Gostermek


nodeps benzeri secenekleri kullanmadgnz surece rpm normalde bagmllklar bozacak islemleri yap-
manza izin vermeyecektir. Ornegin sisteminizde oncelikle x kutuphaneleri olmadan xsnow yukleyemezsi-
niz. Bir defa Xsnow yuklediginizde de oncelikle Xsnowu kaldrmadan x kutuphanelerini de kaldramaz-
snz. Bazen sorun olsa da bu bize rpmin gucunu gostermektedir. Bunun anlam bir rpm yuklediginizde
onun direk calsmasn beklersiniz. rpm zaten sisteminizdeki bagmllklar belirlediginden bu bagmllklar
yuzunden fazladan is yapmak istemezsiniz. Bazen bagmllklar cozmeye calsrken, bir paketi -R secenegi
ile kullanmak yararl olabilir. Boylece sistemde ne olmas gereltigini tam olarak belirleyebilirsiniz.
Ornegin xsnow paketi C kutuphanesine, math kutuphanesine, X kutuphanelerine ve belirli rpm ver-
siyonlarna bagmldr.

# rpm -qpR xsnow-1.42-8.i386.rpm


warning: xsnow-1.42-8.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
libc.so.6
libc.so.6(GLIBC_2.0)
libm.so.6
libX11.so.6
libXext.so.6
libXpm.so.4

Ayrca -p secenegini es gecerek ayn bilgi icin kurulu veritabann da sorgulayabilirsiniz.

# rpm -qR xsnow

12
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

4.12 Bir Paketin Butunlugunu Saglamak


Bir web sayfasndan ya da ftp sitesinde paket indirdigimizde guvenlik amacyla bu paketi kurmadan
once butunlugunu kontrol etmek isteyebiliriz. Tum rpmler MD5 sum imzaldr. Ayrca baz yazarlar
paketlerinin guvenligini artrmak amacyla PGP ve GPG imzalar da kullanrlar. Bir paketin imzasn
kontrol etmek icin checksig secenegini kullnabilirsiniz:
# rpm --checksig xsnow-1.41-1.i386.rpm
xsnow-1.41-1.i386.rpm: md5 GPG NOT OK

Bir dakika! Bu cksa gore GPG imzas gecerli degildir. Neyin yanls oldugunu anlamak icin cks
acklamal durumda inceleyelim:
# rpm --checksig -v xsnow-1.41-1.i386.rpm
xsnow-1.41-1.i386.rpm: MD5
sum OK: 8ebe63b1dbe86ccd9eaf736a7aa56fd8 gpg: Signature made Thu 10 May
2001 01:16:27 AM EDT using DSA key ID B1F6E46C gpg: Cant check
signature: public key not found

O halde problemimiz yazarmzn public anahtarn alamamamz. Paketin yazarnn web sitesinden
anahtar aldktan sonra (rpm -qi cksnda web adresi gosterilmektedir) bu key dosyasn import edersiniz.
Bir anahtar import edildiginde sizin sisteminizde keyring denilen ve icerisinde tum anahtarlarn tutuldugu
bir dosya icerisine yazlr. Boylece kullandgnz, indirdiginiz dokuman ve dosyalar bu anaharlara gore
kontrol edilerek guvenlik saglanmaktadr.
# gpg --import dan.asc
# rpm -K xsnow-1.41-1.i386.rpm
xsnow-1.41-1.i386.rpm: md5 gpg OK

Not: Bu kullanm sisteminizde mevcut rpm versiyonuna gore degisebilir.

4.13 Kurulmus Bir Paketin Kontrolunu Saglamak


Bir paketin butunlugunu kontrol etmeye benzer olarak, rpm -V ile yuklenmis dosyalarnzn da butunlu-
gunu kontrol edebilirsiniz.
# rpm -V xsnow

Normalde hic bir sorun olmadgn anlatmak amacyla bu komut hic bir cks uretmez. Simdi isleri
biraz daha karstrp tekrar deneyelim:
# rm /usr/X11R6/man/man1/xsnow.1x.gz
rm: remove regular file /usr/X11R6/man/man1/xsnow.1x.gz? Y
# cp /bin/sh /usr/X11R6/bin/xsnow
cp: overwrite /usr/X11R6/bin/xsnow? y
[root@localhost erman]# rpm -V xsnow
S.5....T /usr/X11R6/bin/xsnow
missing d /usr/X11R6/man/man1/xsnow.1x.gz

Bu cks bize Xsnow binarysi icin yaplan MD5 sum, dosya boyutu ve mtime testlerinin basarsz
oldugunu gostermektedir. Ve butun klavuz sayfalar eksik durumdadr! Simdi bu bozulmus kurulumu
onaralm ve uygulamamz calstralm:
# rpm -e xsnow
[root@localhost erman]# rpm -ivh xsnow-1.42-8.i386.rpm
warning: xsnow-1.42-8.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing...
########################################### [100%]
1:xsnow
########################################### [100%]
[root@localhost erman]# xsnow
Xsnow-1.42, December 14th 2001 by Rick Jansen (rja@euronet.nl)
WWW: http://www.euronet.nl/~rja/Xsnow/

< Simdi masauztune baknz :) ->

13
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

4.14 rpmi Konfigure Etmek


rpm nadir olarak konfigure edilmeye ihtiyac duyar. Eski versiyonlarda run-time operasyonlar etkile-
mek icin /etc/rpmrc icerisinde degisiklikler yapabiliyordunuz. Yeni versiyonlarda bu dosya /usr/lib/-
rpm/rpmrc icerisine tasnmstr ve sistem yoneticileri tarafndan degistirilebilir degildir. Daha cok cesitli
platformlar icin uyumluluk bilgilerini ve bayraklar listeler. Eger rpmi konfigure etmek istiyorsanz
/etc/rpm/macros dosyasn degistirerek bunu yapabilirsiniz. Bu nadiren yaplan bir islem oldugu icin
burada ayrntl olarak bahsetmeyecegiz. Asagdaki komut ile dogru olan dokumantasyon dosyasn bula-
bilirsiniz:

# rpm -qld rpm | grep macros

5 Debian Paket Yonetimi, apt-get Giris


Debian paket yonetimi cesitli farkl araclardan meydana gelmektedir. Komut satr araclarndan olan
apt-get ile yeni paketleri en kolay sekilde yukleyebilirsiniz. Ornegin frozen-bubble programn yuklemek
icin root kullancs olarak asagdakini yapnz:

apt-get install frozen-bubble


Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
frozen-bubble-data
The following NEW packages will be installed:
frozen-bubble
1 packages upgraded, 1 newly installed, 0 to remove and 214 not upgraded.
Need to get 5225kB of archives. After unpacking 291kB will be used.
Do you want to continue? [Y/n] y
Get:1 http://ftp.de.debian.org testing/main frozen-bubble-data 1.0.0-3 [5155kB]
8% [1 frozen-bubble-data 423935/5155kB 8%] 13.1kB/s 6m5s

Bu cks gozden gecirdigimizde frozen-bubble programnn yuklendigini, webden getirldigini, acldgn


ve kuruldugunu gorebilirsiniz.

5.1 Taklit Kurulum


Eger apt-get kuracagnz paketlerin baska paketlere bagl oldugunu tespit ederse bu paketleri de otomatik
olarak bulup kuracaktr. Son ornekte sadece frozen-bubble kurulmustur. Cunku frozen-bubblen bagl
oldugu tum paketler zaten sistemde mevcut idi. Fakat bazen apt-getin bulmas gereken paket says cok
fazla olabilir ve kurulumu baslatmadan once nelerin yuklenmesi gerektigini gormekte fayda vardr. Bunu
tam olarak -s secenegi ile yapabilirsiniz. Eger sistemimize bir icq istemcisi olan ickle isimli program
yuklemek istersek, once hangi paketlerin yuklenmesi gerektigini ogrenmek icin:

# apt-get -s install ickle


Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
ickle
0 packages upgraded, 1 newly installed, 0 to remove and 214 not upgraded.
Inst ickle (0.3.2-1 Debian:testing)
Conf ickle (0.3.2-1 Debian:testing)

Bundan sonra da eger isterseniz apt-get, paketlerin yuklenecegi ve konfigure edilecegi (ya da kuru-
lacag) liste srasna gore isleme devam eder.

5.2 Paket Kaynak Listesi: apt-setup


apt-get sizin icin paketleri otomatik olarak getirdiginden, henuz kurmadg paketleri nereden bulmas
gerektigini bilmelidir. Bu bilgi /etc/apt/sources.list icerisinde bulunmaktadr.

14
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

# cat /etc/apt/sources.list
# See sources.list(5) for more information, especialy
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.

# Security updates for "stable"


deb http://security.debian.org stable/updates main contrib non-free
deb http://security.debian.org testing/updates main contrib non-free

# Stable
deb http://ftp.de.debian.org/pub/debian stable main contrib non-free
deb http://ftp.de.debian.org/pub/debian-non-US stable/non-US main contrib non-free
....

<listenin devamn yazmadk>


Bu listeyi eliniz ile degistirebilseniz bile (bkz: source.list klavuz sayfas) bu is icin daha interaktif bir
arac kullanabilirsiniz.

# apt-setup

Bu arac sizin debian paketlerini bulabileceginiz CDROMlar, web siteleri ve ftp siteleri yerler konusunda
islem yapmanza olanak saglar. Isiniz bittiginde yaptgnz degisiklikleri /etc/apt/source.list dosyasna
kaydeder ve sordugunuz zaman apt-get yine bu listedeki kaynaklarda paketleri aramaktadr.

5.3 apt-getten dselecte


apt-get arac apt-get klavuz sayfasnda da bulabileceginiz bir cok komut satr secenegine sahiptir.
Ontanml olan secenekler genel olarak gayet iyi calsmaktadr ancak eger ayn secenegi her zaman kul-
landgnz dusunuyorsanz /etc/apt/apt.conf dosyasna bir ayar eklemek isteyebilirsiniz. Bu dosyann
yazm kurallar apt.conf klavuz sayfasnda ayrntl olarak anlatlmaktadr.

# man apt.conf

Dedigimiz gibi apt-get bizim kullandgmz install komutunun yannda bir cok komuta sahiptir. Bunlar-
dan bir tanesi de Debian sisteminizde yuklu her debian paketi icin statu ayarna uyan apt-get dselect-upgr
komutudur.

5.4 dselecte Baslarken


dselect denilen arac bir Debian sisteminde paketleri yonetmek icin kullanlan bir arayuzdur. Dselect
menusu kullanarak sistem yoneticisi asagdaki ilemleri gerceklestirebilir:

Mevcut paket versiyonlarnn listesini guncellemek


Mevcut ve kurulmus paketlerin durumlarn goruntulemek
Paket secimlerini degistirmek ve bagmllklar yonetmek
Yeni paketler yuklemek ve paketleri yeni versiyonlar ile guncellemek

Her paket icin durum (statu) /var/lib/dbkg/status dosyasnda yer alsa da bu dosyay guncellemek
icin en iyi yol yine daha interaktif bir arac olan dselecti kullanmaktr.

# dselect

Debian dselect package handling frontend.

0. [A]ccess Choose the access method to use.


1. [U]pdate Update list of available packages, if possible.
2. [S]elect Request which packages you want on your system.
3. [I]nstall Install and upgrade wanted packages.
4. [C]onfig Configure any packages that are unconfigured.
* 5. [R]emove Remove unwanted software.
6. [Q]uit Quit dselect.

15
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

Debian dselect package handling frontend.

0. [A]ccess Choose the access method to use.


1. [U]pdate Update list of available packages, if possible.
2. [S]elect Request which packages you want on your system.
3. [I]nstall Install and upgrade wanted packages.
4. [C]onfig Configure any packages that are unconfigured.
* 5. [R]emove Remove unwanted software.
6. [Q]uit Quit dselect.

Move around with ^P and ^N, cursor keys, initial letters, or digits;
Press <enter> to confirm selection. ^L redraws screen.

Version 1.10.9 (i386).


Copyright (C) 1994-1996 Ian Jackson.
Copyright (C) 2000,2001 Wichert Akkerman.
This is free software; see the GNU General Public Licence version 2
or later for copying conditions. There is NO warranty. See
dselect --licence for details.
Move around with ^P and ^N, cursor keys, initial letters, or digits;
Press <enter> to confirm selection. ^L redraws screen.

Version 1.10.9 (i386).


Copyright (C) 1994-1996 Ian Jackson.
Copyright (C) 2000,2001 Wichert Akkerman.
This is free software; see the GNU General Public Licence version 2
or later for copying conditions. There is NO warranty. See
dselect --licence for details.

5.5 dselect Select Modunu Kullanmak


Her paketin durumunu goruntulemek ve degistirmek icin Select secenegini secebilirsiniz. Bundan sonra
ekran dolusu yardm goruntulenecektir. Bu yardm okuduktan sonra <enter> tusuna basnz. Daha sonra
asagdakine benzer sekilde bir paket listesi goreceksiniz:

EIOM Pri Section Package Inst.ver Avail.ver Description


- All packages -
--- Obsolete and local packages present on system ---
----- Obsolete/local Required packages -----
------- Obsolete/local Required packages in section base -------
*** Req base adduser 3.50 <none>
*** Req base base-files 3.0.8 <none>
*** Req base base-passwd 3.5.3 <none>
*** Req base bash 2.05b-7 <none>
*** Req base bsdutils 2.11z-1 <none>
*** Req base console-tool 0.2.3dbs-32 <none>
All packages
The line you have highlighted represents many packages; if you ask to
install, remove, hold, &c it you will affect all the packages which
match the criterion shown.

If you move the highlight to a line for a particular package you will
see information about that package displayed here. You can use o and
O to change the sort order and give yourself the opportunity to mark
packages in different kinds of groups.

5.6 Paket Durumu


Her paketin durumu kapal bir baslk olan EIOM altnda yer almaktadr. Bizi ilgilendiren kolon her
paketin asagdakilerden bir tanesi ile isaretlendigi M karakteri altndadr:
Isareti degistirmek icin istediginiz koda gore bir tusa basnz (esit, dash ya da altcizgi). Eger isareti *
(asteriks) karakterine degistirmek istiyorsanz + tusuna basmalsnz. Bunu yaptktan sonra buyuk harf
Q kullanarak yaptgnz degisiklikleri kaydedip Select ekranndan ckabilirsiniz. Eger dselect icerisinde

16
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

yardm almak isterseniz herhangi bir zamanda ? tusuna basarak yardm alabilirsiniz. Sonra da tekrar
space tusuna basarak yardm ekranndan ckabilirsiniz.

5.7 Kurulum ve Konfigurasyon


Debian paketlerin durum ayarlarna bagl olarak siz apt-get dselect-upgrade yazana kadar paketleri yukle-
mez ya da kaldrmaz. Bu komut aslnda sizin icin bir seferde birkac tane adm gerceklestirir: Kurulum,
Kaldrma ve Konfigurasyon. Kurulum ve Kaldrma admlar srasnda soru sormak icin program durmaz.
Fakat konfigurasyon admnda paketlerin sizin istediginiz yolla konfigure edilmesini saglamak amacyla
bir takm sorular sorulmaktadr. Bu admlar calstrmak icin baska yollar da vardr. Ornegin her adm
ayr olarak dselect menusunden secebilirsiniz. Baz paketler kendi konfigurasyon admlar icin debconf
denilen bir sistem kullanrlar. Boylece kendi kurulumlar ile ilgili sorular text terminali, grafik arayuz
veya web sayfas gibi cesitli ortamlarda sorabilirler.

5.8 dpkg Ile Kurulmus bir Paketin Durumunu Ele Almak


Uzun paket listeleri icin su ana kadar gormus oldugumuz Debian paket yonetim araclar birden fazla
admdan olusan operasyonlar icin kullanlabilecek en iyi araclardr. Ancak yine de bu araclarn paket
yonetimi konusunda eksik oldugu yonler vardr. Bu durumlar icin dpkg kullanmak isteyeceksiniz. Ornegin
bir paketin tum durum ve acklamalrn gormek icin -s secenegini kullannz:

#dpkg -s ickle
Package: ickle
Status: deinstall ok config-files
Priority: optional
Section: net
Installed-Size: 1364
Maintainer: Leo Costela <costelaaa@ig.com.br>
Version: 0.3.2-1
Config-Version: 0.3.2-1
Depends: ickle-common (= 0.3.2-1), libc6 (>= 2.2.4-4),
libglib1.2 (>= 1.2.0), libgtk1.2 (>= 1.2.10-4),
libgtkmm1.2, libicq2000 (= 0.3.2-1), libsigc++0,
libstdc++2.10-glibc2.2 (>= 1:2.95.4-0.010810),
xlibs (>> 4.1.0)
Suggests: ickle-control (= 0.3.2-1)
Description: An ICQ2000 client for GTK+
Ickle is an ICQ client which is able to communicate with ICQ servers
using the new ICQ2000 protocol. This offers much better reliability
than the older ICQ99 protocol. ickle has a constantly improving
interface, now supporting history browsing, and much more.
.
Ickle currently supports:
* Sending/Receiving messages, URLs and SMS messages
* Retrieving away messages
* Fetching user info from server
* Fetching/setting away messages
* Custom away messages
* Authorisation Requests
* "User Added You" messages
.
This version is compiled without gnome support, for gnome support
install the package ickle-gnome.

5.9 Bir dosya ile .deb Arasndaki Baglant


.deb paketi dosyalar icerdiginden dolay, paketin icerisinde yer alan dosyalar listelemenin bir yolu
oldugunu dusunebilirsiniz. Evet boyle bir sey yapmanz mumkundur ve bunun icin -L secenegini kul-
lanmanz gerekmektedir:

# dpkg -L frozen-bubble
/.

17
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

/usr
/usr/lib
/usr/lib/menu
/usr/lib/menu/frozen-bubble
/usr/lib/perl5
/usr/lib/perl5/auto
/usr/lib/perl5/auto/fb_c_stuff
/usr/lib/perl5/auto/fb_c_stuff/fb_c_stuff.bs
/usr/lib/perl5/auto/fb_c_stuff/fb_c_stuff.so
/usr/games
/usr/games/frozen-bubble
/usr/games/frozen-bubble-editor
/usr/share
/usr/share/doc
/usr/share/doc/frozen-bubble
/usr/share/doc/frozen-bubble/README
/usr/share/doc/frozen-bubble/AUTHORS
/usr/share/doc/frozen-bubble/copyright
/usr/share/doc/frozen-bubble/changelog.gz
/usr/share/doc/frozen-bubble/changelog.Debian.gz
/usr/share/man
/usr/share/man/man6
/usr/share/man/man6/frozen-bubble.6.gz
/usr/share/man/man6/frozen-bubble-editor.6.gz
/usr/share/gnome
/usr/share/gnome/apps
/usr/share/gnome/apps/Games
/usr/share/gnome/apps/Games/frozen-bubble.desktop
/usr/share/perl5
/usr/share/perl5/fbsyms.pm
/usr/share/perl5/FBLE.pm
/usr/share/perl5/fb_c_stuff.pm
/usr/share/perl5/fb_stuff.pm
/usr/share/pixmaps
/usr/share/pixmaps/frozen-bubble-icon-48x48.png
/usr/share/pixmaps/frozen-bubble-icon-16x16.png
/usr/share/pixmaps/frozen-bubble-icon-32x32.png
/usr/share/pixmaps/frozen-bubble.xpm

Bunun tersine belirli bir dosyaynn hangi pakete ait oldugunu anlamak icin de -S secenegini kullana-
bilirsiniz.

# dpkg -S /usr/share/pixmaps/frozen-bubble.xpm
frozen-bubble: /usr/share/pixmaps/frozen-bubble.xpm

Gordugunuz gibi kolonun solunda paketin ismi belirtilmektedir.

5.10 Yuklenecek Paketleri Bulmak


Genellikle apt-get ihtiyacnz olan bir Debian paketini zaten biliyor olacaktr. Eger bu olmazsa bu debian
paketleri listesi icerisnden ya da web den bu paketleri bulabilecek durumda olmalsnz. Eger .deb dosyasn
bulur ve indirirseniz -i secenegiyle kurabilirsiniz:

# dpkg -i /tmp/dl/xsnow_1.40-6_i386.deb

eger .deb olarak aradgnz dosyay bulamayp yerine .rpm ya da baska bir paket formatnda bul-
duysanz alien programn kullanabilirsiniz. alien program paketleri cesitli formatlardan .deb formatna
cevirmektedir.

5.11 Dpkg Ile Bir Paketi Konfigure Etmek


Bu paketlerden bir tanesini konfigure etmek icin dbkg configure komutu kullanmalsnz. Bu kullanm
yuklenmis bir programn dosyalar ya da programa ait ayar dosyalar zarar gordugu zaman ise yarayabilir.

18
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

5.12 Ek Debian Paket Yonetim Araclar


Burada anlattklarmza ilave olarak, daha bircok Debian paket yonetimi araclar bulabilirsiniz. Bunun
icin Debian anasayfasna, Debian kurulum rehberine, Debian paket listelerine ve Alien anasayfasna ba-
kabilirsiniz.

6 Huzurlarnzda cekirdek... Linux!


Genel olarak Linux ismi, Linux dagtm ad altnda gecen, programlarn birarada calsmasndan olusan
dagtmlar tanmlamak icin kullanlr. Halbuki teknik olarak Linux sadece cekirdek (kernel)in ismidir.
Herne kadar Linux diye adlandrldgmz diger parcalar (kabuk, derleyiciler vs.) sistemin calsmas ve tam
bir isletim sistemi olusturmas icin ayn derecede gerekli olsalar da teknik olarak cekirdekten ayrdrlar.
Yine de insanlar Linux kelimesini Linux tabanl dagtm olarak kullanmaya devam edeceklerdir. Yine
de herkesin hemfikir olacag nokta Linux cekirdeginin her Linux Isletim sisteminin kalbini olusturdugudur.

6.1 Donanm ile arabirim olusturmak


Linux cekirdeginin temel gorevi sisteminizde donanma erisim icin direkt bir arabirim saglamaktr. Cekir-
dek ham donanm ve uygulama programlar arasnda bir soyutlama katman saglar. Boylelikle programlar
ana kartnzn veya disk kontrol unitesinin detaylarn bilmek durumunda kalmadan cok daha ust seviyede
diskten okuyup ona bilgi yazabilirler mesela.

6.2 CPU Soyutlama


Linux cekirdegi ayn zamanda sisteminizdeki islemciye de bir soyutlama katman saglar - bu sayede bircok
program es zamanl calsyormus izlenimi verir. Herbir programn gerektigi kadar islemci zaman ve diger
kaynaklardan yararlanmasn cekirdek ayarlar.
Su anda bir Linux sistem uzerinde calsyorsanz, kullandgnz cekirdek ya UP(uniprocessor (tek is-
lemcili)) ya da SMP(symmetric multiprocessor(simetrik cok islemcili)) bir cekirdektir. Eger bir SMP ana
karta sahipseniz ve UP cekirdek kullanyorsanz, Linuxunuz ekstra islemcilerden haberdar olmayacaktr.
Bunu duzeltmek icin kendi donanmnza uygun bir SMP cekirdek derlemeniz gerekir. Halihazrda SMP
cekirdekler, kucuk bir performans kaybyla da olsa UP sistemlerde de calsacaklardr.

6.3 IO(giris/cks)lar Soyutlama


Cekirdek ayn zamanda her turlu dosya girdi cktlarn soyutlama isini de ustlenir. Her bir programnzn
bu isleri kendi basna yaptgn bir dusunun. Disk kontrolorlerinizi degistirdiginiz takdirde butun prog-
ramlarnz caklp kalacaklard. Bu yuzden Linux cekirdegi de programlarn kullanabilecegi veri depolama
ve erisimi icin soyutlama icin Unix modellerini kullanmaktadr. Bu sekilde kullandgnz veritaban, veriyi
IDE ya da SCSI RAID dizisinde ya da ag uzerinden erisilen bir dosya sisteminde tutup tutmadgnzla
ilgilenmeyecek, sadece o veri ile isini yapacaktr.

6.4 Ag Merkezi
Linuxun en unlu ve iddial oldugu alanlardan biri oldukca guclu ag yaps, ozellikle de TCP/IP destegidir.
Eger simdiye kadar TCP/IP desteginin Linux cekirdeginde yeraldgn tahmin ettiyseniz, haklsnz.
Cekirdek, standartlarla uyumlu, yuksek seviyeli bir arabirim ile ag uzerinden veri gonderilmesini ve
alnmasn destekler. Arka plnda ise Linux cekirdegi sizin ethernet kartnz ya da pppd daemon ile dusuk
seviyeli baglantlar halleder ve Internet iletisimini saglar. Bu konunun detaylar bir sonraki dersin konu-
sudur.

6.5 Agn Faydalar


Linuxun en iyi ozelliklerinden biri cekirdekte yeralan bircok yararl ozelliktir. Mesela bir Linux cekirdegi-
ni, butun evinizdeki agn modem ustunden Internete cks kaps olmas icin konfigure edebilirsiniz buna
IP Masquerading veya IP NAT denir. Bunun dsnda Linux cekirdegi agdaki diger Unix makinalarla
dosya paylasabilecek sekilde de konfigure edilebilir. Cekirdekte buna benzer bir cok faydal ozellikl vardr,
bunlar cekirdek ozelliklerini incelerken daha detayl olarak da goreceksiniz.

19
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

6.6 Acls islemleri


Sanrz, su an Linuxun aclsta hangi asamalardan gectigini gozden gecirmek icin tam da zaman. Linux
tabanl sisteminizi actgnzda cekirdek imaj (tek bir ikilik dosyadr) diskten hafzaya Lilo ya da Grub
gibi bir yukleyici tarafndan yuklenir ve ardndan cekirdek sistemin kontrolunu alr. Yaptg ilk seylerden
biri mevcut donanmlar gozden gecirmek ve desteklemek uzere konfigure edildigi donanmlar tanmaktr.
Donanmlar dogru olarak tannp isler hale getirildiklerinde, cekirdek normal kullanc alannda calsan
programlar (process(islemler) diye de gecer bunlar) calstrr. Ilk calstrlan program /sbin/initdir. Init
ise /etc/inittab altnda tanmlanan diger programlar calstrr. Saniyeler icinde sisteminiz ayaga kalkms
ve calsr halde, kullanmnza hazrdr. Herne kadar hemen hicbir zaman cekirdege dogrudan erisim
saglamasanz da, Linux cekirdegi butun normal programlarn ustunde aralksz calsmakta, bu prog-
ramlarn ve kutuphanelerin ihtiyac duyduklar sanallastrma ve soyutlama islemlerini cesitli katmanlarda
gerceklestirmektedir.

6.7 Ve huzurlarnzda... moduller


Yakn tarihli butun Linux cekirdekleri, cekirdek modullerini destekler. Cekirdek modulleri oldukca hos
seylerdir -basitce cekirdegin bir parcas olan, goreceli olarak cok daha kucuk dosyalardan olusurlar.
Cekirdek belli bir fonksiyonu gerceklestirmek icin bir module ihtiyac duydugunda o modulu diskten
otomatik olarak yukler ve kendisine entegre eder, boylelikle dinamik olarak yetkinligini arttrabilir. Eger
bir cekirdek modulunun ozellikleri bir sure kullanlmazsa, cekirdek onu hafzdan ckartabilir ve boylelikle
autocleaning denen bir islemi gerceklestirerek gereksiz kaynak kullanmn azaltr. Cekirdek modulleri
olmasa, calsmakta olan cekirdegimize (ki kendisi tek bir dosyadan olusur) butun gereken ozellikleri
yuklememiz gerekecekti. Normalde ise temel ihtiyaclar saglayacak bir cekirdek derleyip, ilerde ihtiyac
duyabilecegimiz modulleri ekleriz. Eger gerekirse uygun modul cekirdege daha sonra dinamik olarak ek-
lenebilir. Bu ayn zamanda RAM ve diger kaynaklarn da korunmas anlamna gelir, cunku bir modul
ancak gerek duyuldugunda yuklenir ve atl hale geldiginde hafzadan ckartlr.

6.8 Moduller nerede durur ?


Cekirdek modulleri genelde /lib/modules/x.y.z (x.y.z modullerin uyumlu oldugu cekirdek surumunu belir-
tir) altnda dururlar; her modulun isminin sonunda .o uzants vardr, bu sayede bu dosyalar makina dili
komutlar iceren dosyalar olarak tanmlanrlar. Tahmin edebileceginiz gibi her modul, belli bir cekirdek
fonksionalitesini tanmlar. Bir modul FAT dosyasistemi destegi saglayabilirken bir baskas ISA ethernet
destegi saglayabilir.

6.9 Moduller her islem icin kullanlamaz


Herseyi bir modul haline getiremeyeceginizi belirtmekte fayda var. Moduller disk uzerinde durduklar icin
sizin baslatlabilir linux cekirdeginizin kendi icinde mevcut disk kontrolorunuzun destegine sahip olmas
gerekir. Eger bu destek yoksa (veya bu destegi moduler olarak derlediyseniz) cekirdeginiz bu modulleri
yuklemeyi beceremeyecektir (cunku modullerin yuklu oldugu diske erisim yeteneginden yoksundur) ve bu
yuzden de sisteminiz baslatlamayacaktr.

7 Cekirdek kaynaklarn bulup bilgisayarnza indirmek


Bu dokuman yazldg sralarda en yeni cekirdek 2.4.18di. 2.4.18 cekirdek 2.4 tutarl cekirdek serisinin
bir parcasdr. Bu seri gercek dunyada uretim amacl kullanlacak sistemler icin hazrlanmaktadr. Bu
seri ile es zamanl olarak gelistirilen 2.5 serisi de kullanma acktr, fakat bunlarn uretim sistemlerinde
kullanlmas tavsiye edilmemektedir. 2.5deki 5 says tek bir saydr, ve cekirdek terminolojisinde bu
serinin cekirdek gelistiricilerine ve deneme kullanclarna yonelik deneysel bir surum oldugunu belirtir. 2.5
surum cekirdekler, yeteri kadar guvenilir hale gelip, uretim sistemlerinde kullanlabilir hale ulastklarnda
2.6 surum numarasn alacaklardr (cift sayya dikkat).

7.1 Hangi cekirdek kaynaklarn kullanmal ?


Eger mevcut cekirdeginizin yeni bir surumunu derlemek istiyorsanz (mesela SMP destegi eklemek isteye-
bilirsiniz) en iyi yontem dagtmnzn cekirdek kaynak kodu paketini kurmaktr. Bunu kurduktan sonra
/usr/src/linux dizini altnda baz dosyalarn hazr oldugunu goreceksiniz. Bunun dsnda tamamen yeni

20
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

bir cekirdek kurmay da isteyebilirsiniz. Genelde en dogru yaklasm dagtmnzn yeni ya da guncellenmis
kaynak kodu paketinden kurulum yapmaktr. Bu paket sizin Linux sisteminizde optimal olarak calsmak
uzere yamanms ve konfigure edilmis cekirdek kaynak kodlarn icerecektir.

7.2 Cekirdegi kaynagndan edinmek


Eger macera meraklsysanz, cekirdek kaynak kodunu http://www.kernel.org/pbu/linux/kernel adre-
sinden genel bir kaynak kodu indirerek edinebilirsiniz. Bu dizinde Linus ya da Marcello tarafndan
yaynlanms resmi kaynak kodlarn bulabilirsiniz. Burada onemli nokta dagtmnzda bulunan butun
ozellikleri bu cekirdegin desteklemeyebilecegi. Bu sebeple tam olarak ne yaptgnzdan emin olmadan
boyle bir genel cekirdek derlememenizde fayda var.
Kernel.orgda degisik dizinler altnda duzenlenmis cekirdek kaynak kodlarn bulacaksnz. Kernel
(v2.2, v2.4 vs.) Her dizinin icinde linux-x.y.z.tar.gz ve linux-x.y.z.tar.bz2 isimli dosyalar buluna-
caktr. Bunlar temel kaynak kodu dosyalardr. Bunlarn dsnda patch-x.y.z.gz ve patch-x.y.z.bz2
dosyalar da vardr. Bunlar ise onceki surumleri guncellemeye yarayan yama dosyalardr. Eger yeni bir
cekirdek derleyecekseniz linux diye baslayan dosyalardan birini almanz gerekir.

7.3 Cekirdek kodu paketini acmak


kernel.orgdan yeni bir cekirdek kodu paketi aldysanz once bunu acmak gerekecektir. Bunun icin once
/usr/src dizinine gidi. Eger burada bir linux dizini varsa onu linux.old dizini haline getirin (mv
linux linux.old tabi bunu root olarak yapyorsunuz) Simdi yeni cekirdegi acmann zaman. /usr/src
altndayken tar zxvf /kernelin/bulundugu/yer/linux-x.y.z.tar.gz ya da cat /kernelin/bulundugu/yer/-
linux-x.y.z.tar.bz2 bzip2 -d tar xvf -. Buradaki fark dosyalarn bzip2 ya da gzip ile skstrlmasndan
kaynaklanmaktadr. Yeni linux dagtmlarnda tar jxvf /kernelin/bulundugu/yer/linux-x.y.z.tar.bz2 -C
/usr/src/linux/ komutu da tar.bz2 dosyasnn aclmasn saglayacaktr.
Bu komutu verdikten sonra cekirdek kaynak kodlar sozkonusu dizine aclacaktr. Yalnz unutma-
manz gereken nokta bu dosyalarn ack halinin muhtemelen 50MBdan fazla tutacagdr. Buna gore yer
acmanzda fayda var harddiskinizde.

8 Cekirdegi Duzenlemek
Cekirdegi derlemeden once baz duzenlemeler yapmamz gerekecek. Bu duzenlemeler, yeni cekirdegimizde
hangi ozelliklerin olacagn ve hangilerinin olmayacagn belirleyecek. Bu srada hangi ozelliklerin ana
cekirdek dosyasnda yeralacag (ve boot islemi srasnda yuklenecegi) hangilerinin ise daha sonradan
eklenebilir moduller olarak derlenecegine de karar verecegiz.
Eski zamanlarda cekirdegi duzenlemek ve derlemek ciddi bir problemdi. Zira config betigini castrmay
gerektiriyordu. Herne kadar hala bu imkan mumkun olsa da biz pek tavsiye etmiyoruz, tabi yuzlerce soruya
teker teker cevap vermek isterseniz siz bilirsiniz.

8.1 Yeni yontem


/usr/scr/linux dizinine girdikten sonra make config yerine make menuconfig ya da make xconfig
komutunu calstrabilirsiniz. make menuconfig guzel bir konsol tabanl ve renkli menu sistemi sunmakta,
make xconfig ise benzer bir sistemi x tabanl bir arabirim ile kullanmanza izin vermekte.
make menuconfig kullandgnzda dikkat etmeniz gereken noktalardan biri, solunda < > bulunan
seceneklerin modul olarak derlenebilecegi.
Uzerinde durdugunuz bir secenegi space tusuna basarak cekirdege dahil edebilir <*>, cekirdekten
ckartabilir < > ya da modul olarak derlemek uzere secebilirsiniz <M>. Bunun dsnda y tusu ile
ekleme, n tusu ile ckartma ve m tusu ile modul yapmay direkt secmeniz de mumkun. Bircok cekirdek
seceneginin detayl acklamalara sahip olmas da bir baska sanstr, bu bilgilere erismek icin de h tusuna
basmanz gerekir.

8.2 Konfigurasyon ipuclar


Malesef hepsini burada acklayamayacagmz kadar cok konfigurasyon secenekleri mevcuttur. Bunun ye-
rine size onemli kategorilerin acklamalarn yapmay uygun bulduk.
Code maturity level options (Kod olgunlugu seviye secenekleri)

21
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

Simdi make menuconfig ya da make xconfig secenegi ile cekirdek duzenleme ortamna girelim.
Kod olgunlugu seviye secenekleri: Bu kategoride tek bir secenek vardr. Prompt for development
and/or incomplete code/drivers (gelistirme ve/veya tamamlanmams secenekleri secebilmek ister misi-
niz ?) Eger bu secenegi secerseniz, deneysel kabul edilen bir cok ozellik (ReiserFS?, devfs vs.) kendileri
ile ilgili kategoriler altnda erisilebilir olacaklardr. Eger bu secenek secilmediyse goreceginiz butun ozel-
likler kararl yap altnda kullanlmakta olan ozellikler olacaktr. Bunu secmeniz, secim sanslarnz
arttracagndan iyi olur.
Moduller ve Islemci ile alakal secenekler: Loadable module support (Yuklenebilir modul destegi)
Bu konfigurasyon kategorisinin altnda cekirdegin modul destegi ile alakal uc secenek vardr. Genelde
ucunun de secili olmas gerekir.
Processor type and features (islemci cinsi ve ozellikleri): Bu bolum cesitli islemci konfigurasyon
seceneklerini icermektedir. Burada Symmetric multiprocessor support ozellikle onemlidir ve birden fazla
islemciye sahip makinalar icin elzemdir. Aksi takdirde sisteminizdeki ilk CPU alglanacaktr. MTTR Sup-
port secenegi genellikle secilir , cunku modern sistemlerde X konusunda performans arts saglamaktadr.
General and parallel port options: (Genel ve paralel port secenekleri)
General setup (Genel duzen): Bu bolumde Networking ve PCI Support secenekleri genel olarak secili
olmaldr. Kernel support for ELF binaries (Elf calsabilir programlar icin cekirdek destegi) de. a.out
ve MISC binary secenekleri de tavsiye edileir fakat bunlarn modul olarak derlenmesi daha iyi olacaktr.
System V IPC ve Sysctl support seceneklerini de secmeye ozen gosterin. Bu secenekler hakknda
daha fazla bilgi edinmek isterseniz help secenegi ile detayl bilgiler alabileceginiz daha once belirtmistik.
Paralel port secenegi ozellikle yazc kullananlar icin gerekecektir. Tam bir yazc destegi icin Cha-
racter Devices (karakter aygtlar) bolumunden Paralel Printer Support (Paralel yazc destegi) ksmn
da secmek gerekir.
RAID ve LVM Multi-device support (RAID and LVM)(Coklu aygt secimi): Bu bolumde Linuxun
yazlmsal RAID ve mantksal bolum yoneticisi ozellikleri secilir. Yazlmsal RAID, disklerinizin birbirleri
ile yedekli olarak calsmasn ve bu sayede performans ve guven artsn saglamay amaclar. Yazlmsal
RAID konusunda detayl bilgilere sondaki kaynaklar bolumunden ulasabilirsiniz.
Networking and related devices(Ag ve ilgili aygtlar) Networking options (Ag secenekleri): Bu bolumde
her turlu ag secenekleri mevcuttur. Linux sisteminizi tipik bir aga baglayacaksanz, Packet socket Unix
domain sockets ve TCP/IP Networking seceneklerini secmeniz gerekmektedir.
Bu temel secenekler dsnda bir cok secenek daha, mesela Network packet filtering (Ag paket filtre-
leme, ip tables kullanmak, firewall kurmak icin) bulunmaktadr.
Cekirdeginizin desteklemesini istedigini ethernet kartlarn da belirtmeniz gerekmektedir. Aradgnz
kart muhtemelen Ethernet (10 or 100MBit) alt kategorisinin altnda bulunmaktadr.
IDE support(IDE destegi) ATA/IDE/MFM/RLL support: Bu bolumde IDE suruculer, CD ve DVD
Romlar ve diger benzer cevrebirimler kullananlara ozgu secenekler yeralmaktadr. Eger sisteminizde IDE
diskleri varsa Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support secenegini secin.
Bunun dsnda Include IDE/ATA-2 DISK support(IDE/ATA2 disk destegini kat) ve mevcut ana
kartnza uygun chipset seceneklerini secin ve bunu cekirdege ekleyin, modul olarak derlemeyin ki sis-
teminiz boot edebilsin). Eger IDE CD Roma sahipseniz, Include IDE/ATAPI CD-ROM support
secenegini de eklemeyi unutmayn. Anakartnzn chipset destegini secmeden de IDE disklere muhtemelen
ulasabileceksiniz fakat bu durumda ana kartn performans avantajlarndan yararlanmams oldugunuzdan
daha yavas bir erisimle kars karsya kalabilirsiniz.
Enable PCI DMA by default if available (eger varsa PCI DMA destegini ac) secenegi de heme
hemen butun sistemler icin tavsiye edilen bir ozelliktir. DMA olmadan IDE cevrebirimleri PIO modunda
ve duruma gore potansiyellerinin on onbes kat daha yavas calsabilirler.
Belli bir disk icin DMAnn etkin hale geldigini hdparm -d 1 /dev/hdx ile root olarak kontrol edebi-
lirsiniz. Burada /dev/hdx DMAi etkin hale getirmek istediginiz diskin addr.
SCSI support(SCSI destegi) Bu kategori SCSI diskler ve cevrebirimlerle ilgili butun secenekleri ba-
rndrr. Eger SCSI tabanl bir sisteminiz varsa SCSI support, SCSI disk support, SCSI CD-ROM
support ve SCSI tape support seceneklerinizi ihtiyaclarnza gore secebilirsiniz.
IDE disklerde oldugu gibi eger sistemin yuklu oldugu disk SCSI bir disk ise bu destekleri yuklenebilir
moduller olarak degil ana cekirdek dosyasnn icine koymanzda fayda var.
Bunlardan baska SCSInin gerektigi gibi calsabilmesi icin SCSI low-level drivers bolumune gidip,
SCSI kartnzn secili oldugundan emin olun, yine bu secenek de cekirdegin icinde direkt yer almaldr,
modul olarak degil.
Miscellaneous character devices (Cesitli karakter aygtlar): Character devices: Bu bolum cesitli cekir-
dek aygt suruculerini icerir. Virtual terminal ve Support for console on virtual terminal seceneklerinin

22
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

secili oldugundan emin olun. Bunlar sistem acldktan sonra standart text tabanl terminallerin sizi
karslamas icin gereklidirler.
Buyuk ihtimalle Unix98? PTY supportu da secmenizde fayda var. Bunlar dsndaki her seyi secimi
size kalmstr. Eger paralel yazc kullanmak istiyorsanz Paralel printer support secenegini secmeniz
gerektigini tekrar hatarlatalm.
Enhanced real-time clock support tavsiye edilir, /dev/agpgart (AGP destegi) ve Direct Rende-
ring Manger da X altnda performans saglayan Linux 3D hzlandrcl kartlar icin gereklidir. Xi bu hzl
modda calstrmak icin cekirdek derleme dsnda da baz ayarlar yapmak gerekecektir.
File systems and console drivers(Dosya sistemleri ve konsol suruculeri): File systems: Bu kategorideki
secenekler tahmin edeceginiz gibi dosya sistemlerini icermektedir. Root (/) dosya sisteminiz icin gerekli
olan dosya sistemi destegini (ext3, reiserfs, jfs, xfs vs.) cekirdege dahil etmeniz gerekmektedir. Bundan
baska /proc file system support secenegi de bir cok dagtm icin elzemdir.
Genel olarak /dev/pts file system support for Unix98? PTYs secenegini secmeniz tavsiye edilir,
tabi /dev file system support secenegini secmiyorsanz. O takdirde /dev/pts secenegini secilmemis
brakmanz gerekir.
Console drivers: Tipik olarka herkez VGA text console (x86 sistemler icin elzemdir) sececektir.
Isterseniz Video mode selection support de secebilirsiniz. Frame buffer support sectiginiz takdirde
ise text tabanl ekran yerine grafik ekranda yazlar gorebilirsiniz. Fakat bu seceneklerini bazlar X ile
karsklklara sebep olmaktadr bu yuzden duz VGA konsola bagl kalmakta, en azndan baslangcta fayda
vardr.

9 Cekirdegi derlemek ve kurmak


Cekirdegi bir kez konfigure ettikten sonra artk derlemeniz gerekir. Fakat bunu yapmak icin once ba-
gmllklar ogrenmelisiniz. Bunu basitce /usr/src/linux dizini icinde make dep komutunu calstrarak
yapabilirsiniz.

9.1 make bzImage


Artk asl cekirdek imajn derlemenin zaman geldi. Yine ayn dizinde make bzImage yazp entera basn.
Makinanzn ozelliklerine ve sectiginiz seceneklere gore yarm saat kadar bir sure sonra (veya cok daha
uzun) /usr/src/linux/arch/i386/boot (x86 PC cekirdegi icin) altnda bzImage dosyasn olusturulmus
bulacaksnz.
Bu imaj nasl sisteme kuracagnza da deginecegiz ama simdilik modullere bir bakalm.

9.2 Modulleri derlemek


bzImage olusturdugumuza gore, modulleri derlemenin zaman geldi demektir. Eger cekirdek secenekle-
rinden hicbirinde modul secenegini isaretlemediyseniz bile bu basamag atlamayn, modulleri bzImagen
hemen ardndan derlemek en dogru harekettir. Zaten eger modulleri etkin hale getirmediyseniz bu asama
oldukca hzl gececektir.

make modules && make modules_install

yazn ve entera basn.


Bu komutla birlikte moduller derlenecek ve /usr/lib/kernelsurumu dizinine kurulacaktr.
Tebrikler sfrdan bir cekirdek derlediniz.

10 LILOda baslangc konfigurasyonu


Artk LILOyu yeni cekirdegi yukleyecek sekilde konfigure etmenin zaman geldi. LILO en cok bilinen ve
kullanlan linux baslangc yukleyicisidir, butun populer Linux dagtmlarnda da bulunur.
Isterseniz oncelikle /etc/lilo.conf dosyasna bakarak baslayalm. Bu dosyada bir yerde image=/vmlinuz
gibi bir satr olacaktr. Bu satr LILOya cekirdek icin nereye bakmas gerektigini belirtir.

23
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

10.1 LILOyu konfigure etmek


LILOyu yeni cekirdegi baslatacak sekilde konfigure etmek icin iki seceneginiz var. Ilki mevcut cekirdek
dosyasnn ustune yenisini yazmak ki cok tavsiye edilmez, herseyin yolunda gideceginden bu kadar emin
misiniz ? Daha guvenilir secenek ise LILOyu istenirse eski cekirdekle sistemi acabilecek sekilde konfigure
etmek. Simdi bu yontemi nasl uygulayacagmz gorecegiz.

10.2 LILO kodu


/etc/lilo.conf dosyanz asagdaki gibi olabilir

boot=/dev/hda
delay=20
vga=normal
root=/dev/hda1
read-only
image=/vmlinuz
label=linux

lilo.confa yeni bir baslangc secenegi eklemek icin sunlar yapn. Once /usr/src/linux/arch/i386/-
boot/bzImage dosyasn /vmlinuz2 gibi bir isimle roota (/) kopyalayn.
Ardndan lilo.conf dosyanzn son uc satrn kopyalayp tekrar yapstrn. Nerdeyse bitti :)
Simdi lilo.conf dosyanzn asagdaki gibi gozukmesi lazm

boot=/dev/hda
delay=20
vga=normal
root=/dev/hda1
read-only
image=/vmlinuz
label=linux
image=/vmlinuz
label=linux

Once ilk image= satrn image=/vmlinuz2 seklinde degistirin ve ikinci label= satrn da la-
bel=oldlinux seklinde degistirmeyi unutmayn. Tabi eger dosyann yukarlarnda bir yerlerde delay=20
gibi bir satr yoksa boyle bir satr da eklemeniz gerekecek. Eger boyle bir satr varsa bekleme suresini
minimum 20 yapn.
Sonuc olarak nihai lilo.conf dosyanz asagdaki gibi gozukecek;

boot=/dev/hda
delay=20
vga=normal
root=/dev/hda1
read-only
image=/vmlinuz2
label=linux
image=/vmlinuz
label=oldlinux

Butun bu degisiklileri yapp text editorunuzden cktktan sonra lilo komutunu verip diskinizdeki kon-
figurasyonun guncellenmesini saglayn. Eger bunu yapmazsanz yaptgnz degisiklikler bir ise yaramaya-
caktr. Ayrca bunu yapnca boot map dosyas da guncellenecektir.

10.3 LILO konfigurasyonunun nedenleri ve nicinleri


Gelelim yaptgmz degisikliklerin acklanmasna. Bu lilo.conf dosyas iki ayr cekirdekle acls yapmak
uzere duznelendi. Orjinal cekirdeginiz /vmlinuz ile acls yapabileceginiz gibi yeni derlediginiz /vmlinuz2
cekirdegi ile de acls yapabilirsiniz. Otomatik olarak yeni cekirdek secilecektir, cunku onun image/label
satr dha yukarda tanmlanmstr. Eger eski cekirdegi boot etmek isterseniz acls srasnda shift tusuna
basn. Bu size istedigini etiketi girip kernel secme sansn verecektir. Burada oldlinux yazp boot edebilir,
ya da taba basp seceneklerinizi gozden gecirebilirsiniz.

24
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

11 PCI aygtlar
Bu bolum PCI aygtlar ile calsmann ince detaylarndan bahsedecektir. Linux altnda PCI aygt destegini
saglamak basitce General Setup bolumu altnda PCI Support secenegini secmekle olur. Bunun
yannda PCI device name database secenegini secmeniz de tavsiye edilir. Bu sayede PCI aygtlarnn
aygt numaras ve saysal bilgileri yerine gercek ingilizce isimlerini gorebilirsiniz.

11.1 Mevcut PCI aygtlarn incelemek


Bilgisayarnza takl olan PCI aygtlarn incelemek icin cat /proc/pci yazabilirsiniz. Ckan bilginin cok
isinize yarayacag, hatta anlaslabilir olacag bile kesin degil :) Bunun yerine lspci -v yazarsanz cok
daha anlaslabilir bir ckt ile karslasrsnz. lspci komutu pciutils paketinin bir parcasdr bu program-
lara http://atrey.karlin.mff.cuni.cz/ mj/pciutils.html adresinden ulasabilirsiniz. Genellikle de hemen her
dagtmda bulunurlar.
lspci -v komutu ile bilgisayarnzda bulundugunu bile bilmediginiz donanmlarla karslasabilirsiniz.
Genellikle bunlar bilgisayarnzn ana kartnn ustunde bulunan pci tabanl cevrebirimleridir. Bunlar ge-
nellikle BIOS vastas ile aktif ya da pasif hale getirilebilirler. Pciutils paketi ayn zamanda setpci komutu
ile cesitli PCI donanmlarnn zamanlamasna mudahale edebilecek bir program saglar. PCI donanm
zamanlamalar ve etkileri konusunda IBM Developerworksun Linux Hardware Stability Guide maka-
lesinin ikinci bolumunu okuyabilirsiniz.

11.2 PCI donanm kaynaklar


Gorevlerini yerine getirebilmek icin sisteminizdeki PCI aygtlar degisik donanm kaynaklarnzdan fay-
dalanrlar, kesmeler bunlara bir ornektir. Bircok PCI aygt donanmsal kesmeleri (interruptlar) islenecek
verileri oldugunu sisteme haber vermek icin kullanrlar. Cesitli donanm aygtlarnz icin hangi kesme-
lerin kullanldgn gormek icin /proc/interrupts dosyasna bakmanz yeterlidir. Bunun icin cat /proc/-
interrupts komutunu vermeniz gerekir. Ckts su sekilde olacaktr.

> cat /proc/interrupts


CPU0
0: 1848603 XT-PIC timer
1: 97489 XT-PIC keyboard
2: 0 XT-PIC cascade
5: 12148 XT-PIC eth0
9: 1397985 XT-PIC nvidia
10: 1 XT-PIC soundblaster
11: 9921 XT-PIC bttv
12: 540231 XT-PIC PS/2 Mouse
14: 25550 XT-PIC ide0
15: 7 XT-PIC ide1
NMI: 0
LOC: 1848535
ERR: 0
MIS: 0
>

Ilk kolon bir IRQ numaras verir, ikinci kolon ise kernel tarafndan o kesmeden kac tane uretildigini
gosterir. Son kolon ise sozkonusu donanmn ksa ismini icerir.
Donanmlarnzn kullanmakta oldugu IO portlarnn listesini de soyle gorebilirsiniz

> cat /proc/ioports


0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0

25
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

0213-0213 : isapnp read


0220-022f : soundblaster
02f8-02ff : serial(set)
0300-0303 : MPU-401 UART
0376-0376 : ide1
03c0-03df : vga+
03e8-03ef : serial(set)
03f6-03f6 : ide0
03f8-03ff : serial(auto)
0a79-0a79 : isapnp write
0cf8-0cff : PCI conf1
4000-403f : Intel Corp. 82371AB PIIX4 ACPI
5000-501f : Intel Corp. 82371AB PIIX4 ACPI
e000-e01f : Intel Corp. 82371AB PIIX4 USB
e400-e43f : 3Com Corporation 3c905 100BaseTX [Boomerang]
e400-e43f : 00:0b.0
f000-f00f : Intel Corp. 82371AB PIIX4 IDE
f000-f007 : ide0
f008-f00f : ide1

12 Linux USB
Cekirdegi konfigure ederken buyuk ihtiamlle USB support bolumu dikkatinizi cekmistir. Burada Uni-
versal Serial Bus (Evrensel Seri Veriyolu) denilen USBnin ozellikleri bulunmaktadr. Nispeten yeni
bir veriyolu olan USB ozellikle cevrebirim alannda gittikce yaygnlasmaktadr, simdiden USB klavye,
fare, modem, printer, scanner hatta depolama cihazlar ckmstr ve gun gectikce de daha yaygn kul-
lanlmaktadrlar.
Linux uzerinde USB destegi de sadece bir kac yllk oldugundan, bircok Linux kullancs simdiye kadar
pek USB cihaz kullanmams ya da Linux altnda USB desteginin tam nasl calstgn bilmiyor olabilir.

12.1 USByi etkin hale getirmek


Linux USB destegini saglamak icin once USB Support bolumune gidip Support for USB secenegini
secin. Bundan sonra yapmanz gereken uygun USB sisteminizi secmek. Secenekleriniz EHCI, UHCI,
UHCI(alternate driver) ve OHCI. Linux kullananlarn problem yasadg temel nokta burasdr.
UHCI, OHCI, EHCI eee, hani bunun kolay olmas gerekiyordu ;)
EHCI ve arkadaslarnn ne oldugunu anlamak icin oncelikle USB kullanacak her anakartn belli bir
USB sistemi oldugunu anlamak gerekir. Iste bu sistemlerin isimleri EHCI, UHCI ve OHCIdir.
EHCI surucusu, yeni model hzl USB 2.0 sistemlerde yeralr.
OHCI surucusu ise, PC olmayan sistemleri de desteklemek amacyla gelistirilmistir, SIS ve ALI chip-
setlerini de destekler.
UHCI surucusu ise basitce geri kalan cihazlar icindir
Tedbirli davranmak icin EHCI ve UHCIden birini secip (cok da farketmez) OHCI destegini de
cekirdege eklemekte fayda vardr.

12.2 Son birkac adm


USB destegini etkin hale getirip gerekli HCI surucusunu sagladktan sonra yaplmas gereken bir iki kucuk
ayar daha var. Preliminary USB device filesystemi etkin hale getirmeniz ve Linux ile kullanacagnz
herhangibir USB surucusunu saglamanz ger ekir. Mesela USB oyun kontrolerini etkin hale getirmek icin
USB Human Interface Device (full HID) supportu secmeniz gerekebilir.

12.3 usbdevfsyi baglamak (mount)


USB destegi olan yeni cekirdeginizi boot ettikten sonra USB aygt dosya sistemini /proc/bus/usb altnda
baglamanz gerekir
mount -t usbdevfs none /proc/bus/usb

Sistem boot ettiginde otomatik olarak USB sistemi baglayabilmek icinse fstabn icine /proc satrndan
sonra

26
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

none /proc/bus/usb usbdevfs defaults 0 0

satrn eklemek gerekir.

13 Diff, Patch
Unixde herseyin bir dosya olarak ele alndgn ve bu sekilde islem gordugunu daha once anlatmstk. Bu
sebeple ozellikle text isleme komutlar oldukca gelismis durumdadr. Bir dosya icinden istenen kelimeleri
ayklama, onlar sralama vs. gibi islemleri zaten daha onceki derselerde yapmstk. Bir baska onemli
islem de bir dosyaya yaplan degisiklikleri bir degisiklikl dosyasnda toplayp, onceki dosya ve degisiklileri
kulanarak dosyann son haline ulasmak.
Bu is icin kullandgmz komutlar diff ve patch komutlar.Simdi bunlar teker teker ele alyoruz.

13.1 Diff
Once bir dosya yarOrnek olarak 2.4.18 kernelimize preemptive patchini uygulayacagz.atalm. Bu dosya
bizim evimizde verecegimiz bir partinin isim listesi olsun.
birinci.txt

ve bunun icinde sunlar yazalm


Ali
Berktan
Ebru
Tanya
Osman
Mehmet
Kemal

Ve kaydedelim. Simdi ise ayn dosyay degistirip, partiye katlamayacaklarn belirtmis olan Osman,
Mehmet ve ve Ebruyu ckartalm. Yerine Mine ve Elay koyallm, partimizde daha cok kz olsun ;)
Dosyann son hali
Ali
Berktan
Tanya
Kemal
Ela
Mine

olacak. Bu halini de son.txt diye kaydedelim ve su komutu calstralm.


diff birinci.txt son.txt

3d2
< Ebru
5,6d3
< Osman
< Mehmet
7a5,6
> Ela
> Mine

Belki ilk baksta cok anlaml gelmeyebilir bu ct ama aslnda cok da anlaml ed komutlardr bunlar.
Acklamak gerekirse su anlamlara gelmektedirler
birinci.txt dosyasnn ucuncu satr ikinci dosyada yok onu sil birinci.txt dosyasnn besinci ve altnc
satrlar olan Osman ve Mehmet ikinci dosyada yok onlar sil ikinci dosyann besinci ve altnc satrlar
ilk dosyada yok, onlar yedinci satrdan itibaren ekle (Kemalin ardna)
simdi cok populer birisi oldugunuzu ve bu listenin binlerce kisi uzunlugunda oldugunu dusunun.
Ya ikinci bir listeyi de herkese gondereceksiniz, yada bu birkac satrlk diff dosyas ile bu isi kolayca
halledeceksiniz.
Tabi bunun icin sozkonusu degisiklikleri bir dosya haline getirmemiz gerekmekte, bu da ilk derste
ogrendigimiz yonlendirme komutlar ile gerceklesmekte:

27
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

$ diff birinci.txt son.txt > degisiklik.txt

Artk elimizde iki dosya var birinci.txt ve degisiklik.txt dosyas.


simdi yapmamz gereken

$ patch birinci.txt degisiklik.txt


patching file birinci.txt

Hersey yolunda gittiyse su an birinci.txt dosyas ve son.txt dosyalarnn ayn olmas lazm. Bakalm
ayn mymslar ?

$ diff birinci.txt son.txt

Herhalde diff gibi bir komutumuz varken, binlerce satrlk iki dosyann ayn olup olmadgn gozumuzle
kontrol edecek degildik :) Gordugunuz gibi diff komutu hicbir ckt vermemis, dolaysyla bu iki dosyann
ayn oldugunu onaylamstr.
Basitce iki dosya icin bu sekilde kullanlan patch ve diff komutlar yuzlerce dosya icin de kullanlabilir.
Ornek olarak 2.4.18 kernelimize preemptive patchini uygulayacagz.

14 Cekirdegi yamamak (patch)


Linux cekirdegi, belli bir ekip tarafndan gelistirilmekte olan bir yazlm projesidir. Bu ekibin dahilinde
ve haricinde bircok kisi Linux cekirdek kodu ile ilgilenmektedir. Bu dogrultuda insanlar zaman zaman
kendileri icin gelistirdikleri ozelliklere cekirdege eklemekte ve bundan diger kisileri haberdar etmektedirler.
Eger bu degisiklikler, yeteri kadar faydal iseler bir sure sonra zaten cekirdegin bir parcas halini alrlar.
Diyelim ki bu turden bir cekirdek yamas biliyorsunuz, (ornegimiz de Linuxun daha etkin calsmasn
saglayan pre-emptive yamas olsun) ve bunun dahil oldugu bir cekirdek derlemek istiyorsunuz. Normalde
make xconfig calstrdgmzda Processor Type and Features altnda bulunmas gereken Preemptible Ker-
nel secenegi goreceginiz gibi standart cekridek kodunda bulunmamakta.
Bunun icin yapmanz gereken sozkonusu yama dosyasn temin etmek ve bunu mevcut cekirdek ko-
dunuzun bulundugu /usr/src/linux altna kopyalamak. Bunun ardndan ise o dizinin altnda su komutu
veriyorsunuz

patch -p1 < preempt-kernel-rml-2.4.18-5.patch


patching file CREDITS
patching file Documentation/Configure.help
patching file Documentation/preempt-locking.txt
patching file MAINTAINERS
patching file arch/arm/config.in
patching file arch/arm/kernel/entry-armv.S
patching file arch/arm/tools/getconstants.c
patching file arch/i386/config.in
patching file arch/i386/kernel/entry.S
patching file arch/i386/kernel/i387.c
patching file arch/i386/kernel/smp.c
patching file arch/i386/kernel/traps.c
patching file arch/i386/lib/dec_and_lock.c
patching file arch/sh/config.in
patching file arch/sh/kernel/entry.S
patching file arch/sh/kernel/irq.c
patching file drivers/ieee1394/csr.c
patching file drivers/sound/sound_core.c
patching file fs/adfs/map.c
patching file fs/exec.c
patching file fs/fat/cache.c
patching file fs/nls/nls_base.c
patching file include/asm-arm/dma.h
patching file include/asm-arm/hardirq.h
patching file include/asm-arm/pgalloc.h
patching file include/asm-arm/smplock.h
patching file include/asm-arm/softirq.h
patching file include/asm-i386/hardirq.h

28
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

patching file include/asm-i386/highmem.h


patching file include/asm-i386/hw_irq.h
patching file include/asm-i386/i387.h
patching file include/asm-i386/pgalloc.h
patching file include/asm-i386/smplock.h
patching file include/asm-i386/softirq.h
patching file include/asm-i386/spinlock.h
patching file include/asm-sh/hardirq.h
patching file include/asm-sh/smplock.h
patching file include/asm-sh/softirq.h
patching file include/linux/brlock.h
patching file include/linux/dcache.h
patching file include/linux/fs_struct.h
patching file include/linux/sched.h
patching file include/linux/smp.h
patching file include/linux/smp_lock.h
patching file include/linux/spinlock.h
patching file include/linux/tqueue.h
patching file kernel/exit.c
patching file kernel/fork.c
patching file kernel/ksyms.c
patching file kernel/sched.c
patching file lib/dec_and_lock.c
patching file mm/slab.c
patching file net/core/dev.c
patching file net/core/skbuff.c
patching file net/socket.c
patching file net/sunrpc/pmap_clnt.c

Gordugunuz gibi patch komutu, sozkonusu dosyay alp, o dosya dogrultusunda gerekli yerlerde gerekli
degisiklikleri yapt.
Simdi tekrar make xconfig yapyoruz ve goruyoruz ki biraz once olmayan Preemptible Kernel secenegi
artk var.
Bu sekilde bir yada daha fazla yama ile cekirdegimizi yamayabilir istedigimiz gibi yeni ozellikler ek-
leyebiliriz. Burada unutulmamas gereken yamann surumu ile cekirdek kodunun surumunun ayn olmas
gerektigi, aksi takdirde problemlerle karslasma ihtimalimiz yuksek.

15 Kaynaklar
Linux Kernel How-to kernel kurulum bilgilerini edinmek icin iyi bir kaynaktr. LILO, Linux Crash Rescue
How-TO dosyalar da sizlere yardmc olabilir.
Linux Kernelleri www.kernel.org adresinde bulunmaktadr
www.linuxdoc.org adresinden Linux konulu hemen her turlu bilgiye ulasabilirsiniz. Burada Guides
baslg altndaki belgeler ozellikle oldukca faydal olacaktr. Eric S. Raymondun Unix ve Internet Fun-
damentals How-To belgesi de bilgilendirici olabilir.
Turkce icerik olarak da yukarda saylan bir cok belgenin turkcelerini belgeler.org adresinde bulabi-
leceginiz gibi, ileriseviye.org ve fazlamesai.net gibi kaynaklardan da faydalanabilirsiniz.

16 TCP/IP Ag Islemlerine Giris


Birkac GNU/Linux yuklu makinadan olusan Ethernet tabanl basit bir YAA (Yerel Alan Ag - LAN
[Local Area Network] ) kurmak cok sk karslaslan goreli olarak basit bir istir. Genellikle bilmeniz gereken
tek sey Linux yuklu bilgisayarlarnzda bir tur Ethernet ag kart bulunup bulunmadgdr. Daha sonra
merkezi bir Ethernet hub ya da switch cihaz ve uygun kablolama ile makinalar birbirine fiziksel olarak
baglanr. Eger tum makinalarn cekirdeginde ilgili Ethernet kartlar ve TCP/IP destegi aktif halde ise
artk makinalarnz yerel ag uzerinden haberlesmek icin her seye sahip demektir.
Ancak tek basna Ethernet konusunun pek eglenceli oldugu soylenemez. Bu asamada tum donanmnz
ve cekirdeginiz yerel ag uzerinden iletisim kurmaya hazr olmakla birlikte bu durum tek basna ye-
terli degildir. Linux uygulamalarnn buyuk cogunlugu ag uzerinde ham Ethernet paketlerini (ya da
cercevelerini) kullanarak veri degistokusu yapmaz. Bunun yerine, uygulamalarn buyuk bir ksm TCP/IP

29
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

protokolu olarak isimlendirilen ve daha yuksek ve soyut seviyeli bir protokol kullanr. Mutlaka TCP/IP
sozunu daha once duymussunuzdur. Bu bir protokol suitidir ve bunyesindeki protokoller bugun Internet
diye bildigimiz devasa uluslararas ag uzerindeki iletisimin temel kurallarn belirler (TCP/IPnin aclm:
Trasmission Control Protocol / Internet Protocol).

16.1 Cozum: Ethernet uzerinden TCP/IP


Yaplmas gereken Ethernet uyumlu agnzdaki bilgisayarlar TCP/IP protokolu ile iletisim kurabilecekleri
sekilde ayarlamaktr. Bunun nasl calstgn anlamak icin once Etherneti biraz anlamalyz. Ethernet ile
birbirlerine bagl bilgisayarlardan olusan bir agda, her makinann uzerindeki Ethernet kartnn kendine
ozgu ve digerlerinden farkl bir adresi vardr. Kartn fiziksel olarak icine uretilirken gomulen bu adres
suna benzer:

00:01:02:CB:57:3C

Ethernet sistemi CSMA/CD (Carrier Sense and Multiple Access with Collision Detection - Tasyc
Alglama ve Carpsma Tespitli Coklu Erisim) isimli bir yontem kullanr. CSMA/CD sistemi ksaca su
demektir: tum cihazlar tek bir fiziksel ortam uzerinden haberlesirler, belirli bir anda sadece tek bir cihaz
yayn yapabilir ve tum cihazlar eszamanl (simultane) olarak yaplan yayn dinleyebilirler. Eger 2 farkl
cihaz ayn anda yayn yapmaya kalkarsa iletisim carpsmas olusur, bu tespit edilir ve her iki cihaz da cok
ksa bir sure beklerler (bu sure belli bir aralkta gelisiguzel tayin edilir) ve tekrar yayn yapmaya calsrlar.
Boylece tek bir seferde tek bir cihazn belli bir uzunluktaki mesajn ag ortamndaki bilgisayarlara iletmesi
pratik olarak saglanr, bir cihazn urettigi ve ag ortamnda yaynladg mesajn kime ait oldugu da mesaja
eklenen ve yukarda bahsi gecen Ethernet adresi sayesinde belirlenmis olur.

16.2 IP adreslerine giris


Bu donanm adresleri yerel agdaki makinalar birbirlerinden ayrt etmeek icin kullanlr. Donanm adresini
kullanan bir makina bir baska makinaya bir Ethernet paketi yollayabilir. Ancak TCP/IP tabanl iletisim
yontemleri farkl bir adresleme sekli kullanr ve bunlara IP adresleri denir. IP adreslerinin goruntusu suna
benzer:

192.168.1.1

Her bir cevresel ag cihaz icin, cekirdekte, ilgili bir arabirimin varolmas gerekmektedir. Ornegin Li-
nuxda, ethernet arabirimleri, eth0 ve eth1 seklinde isimlendirilmislerdir. PPP arabirimleri ppp0 ve ppp1
olarak ve FDDI arabirimleri ise fddi0 ve fddi1 seklindeisimlendirilmislerdir. Bu arabirim isimleri, bir ayar
komutunda fiziksel bir cihaz belirtmek istediginiz zaman kullanlmakta ve bunun dsnda bir kullanm
alanlar bulunmamaktadr.
TCP/IP ag tarafndan kullanlmadan once, her bir arabirime dunyann geri kalanyla haberlesildiginde
kimlik numarasyms gibi kabul edilen, bir IP adresi atanmaldr. Bu adres, arabirim isminden farkldr,
eger bir arabirimi kap olarak dusunurseniz, adresi de o kapnn uzerine yapstrlms isim plakas (ya da
kap numaras) olarak dusunebilirsiniz.
Donanmn bir ksm tarafndan ki bu donanm parcas En Buyuk Aktarm Birimi (MTU - Maximum
Transfer Unit) olarak bilinir, islenen datagramlarn boyutlarn kstlamak gibi bir ayarn yaplmas da
mumkundur.
IP ag protokolu, adresleri, 32 bitlik numaralar olarak gorur. Her bir makineye, bulundugu ag ortamnda
tek olan bir numara atanmak zorundadr.Internet Protokolunun genelde 4. surumu kullanlmaktadr.
Yerini almak uzere tasarlanms olan bir de 6. surumu vardr. IPV6 degisik bir adresleme semas kullanr ve
daha buyuk bir adresleme alanna sahiptir. Linuxda IPv6 destegi bulunmaktadr, ancak henuz bu kitabn
kapsamna alnmamstr. Linux cekirdegindeki IPv6 destegi iyidir, ancak ag ortamnda kullanlmasn
saglayacak uygulamalarn IPv6ya gore degistirilmesi gerekmektedir.
Eger sadece, baska bir ds ag ile iliskisi bulunmayan, yerel bir agda calsyorsanz, bu numaralar kendi
istediginiz sekilde atayabilirsiniz. Baz IP adres aralklar, belirli tipte ozel aglara ayrlmstr. Ancak In-
ternet uzerindeki siteler icin, bu numaralar, NIC (Network Information Center - Ag Bilgi Merkezi) olarak
bilinen, merkezi bir otorite tarafndan atanmaktadr. Cogunlukla, IP adresleriniz sizin yerinize IP adre-
sinizi alan bir saglayc tarafndan atanr. Bunun yerine, agnz icin kullanacagnz IP adresini dogrudan
NICden hostmaster@internic.net adresine yazarak bir eposta ile ya da http://www.internic.net/ adre-
sindeki formu doldurarak alabilirsiniz.

30
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

IP adresleri, okunulabilirligi arttrmak amacyla, oktet denilen, 4 adet 8 bitlik (1 baytlk - 0 dan
255 e kadar) numaraya ayrlmstr. Ornegin quark.physics.groucho.edu adresindeki makinenin (Grouche
Universitesinde, fizik bolumundeki quark isimli makinenin) IP adresi 0x954C0C04 (onaltlk sistemde)
olsun.
Bu adres 149.76.12.4 olarak farkl bir gosterimde de yazlabilir. Bu ikinci gosterim, genelde noktal
dortlu gosterim olarak bilinir.
Bu tip gosterimin baska bir nedeni ise, IP adreslerinin ilk oktetlerinin ag numarasn, geri kalan-
larn ise makine numarasn gostermeleridir. NICe IP adresi almak icin basvurdugunuzda kullanmay
dusundugunuz her makine icin size bir IP verilmez, onun yerine size bir ag numaras atanr ve bu aralkdaki
tum gecerli IPleri tercihinize gore agnzdaki makinelere atamanza izin verilir.
Makine ksmnn says, agn buyuklugune bagldr. Farkl ihtiyaclar karslamak uzere, IP adreslerinde
farkl noktalardan ayrlan, farkl ag snflar tanmlanmstr. Bu snflar su sekilde tanmlanmslardr:
A Snf: A snf aglar 1.0.0.0dan 127.0.0.0a kadar olan aglar kapsar. Sadece ilk oktet, ag numarasn
belirler, geri kalanlar ise her bir ag icinde kullanlabilecek (atanabilecek) makine saysn belirler ki bu
snfta, dolaysyla, 24 bit makine ksmna ayrlmstr. Bu da kabaca, ag basna 1.6 milyon makine anlamna
gelmektedir.
B Snf: B snf aglar, 128.0.0.0dan 191.255.0.0a kadar olan aglar icermektedir. Ag numaras, ilk iki
oktet ile belirlenir. Bu snf ile 65,024 adet makineden olusan 16,320 adet ag tanmlanabilir.
C Snf: C snf aglar ise 192.0.0.0 ile 223.255.255.0 arasn kapsar. Ilk 3 oktet ag numarasn belirler ve
geri kalanlar da her bir ag icinde bulunabilecek makine saysn belirler. Dolaysyla her biri 254 makineli
yaklask 2 milyon ag tanmlanabilir.
D, E, ve F Snflar: 224.0.0.0 ile 254.0.0.0 arasnda kalan adresler, ya deneysel amacldrlar ya da belirli
amaclar icin ayrlmslardr ve herhangi bir ag tanmlamazlar. Bir internet uzerinde, paketlerin, bir seferde
bir cok noktaya iletilmesi hizmetini veren IP cokluyayn (IP Multicast) icin bu aralktaki adresler atanr.
Yukardaki 149.76.12.4 IP numaral quarkn adresi, B snf olan 149.76.0.0 numaral agdaki 12.4
numaral makineyi belirtir.
Bir onceki listede, tum olas numaralarn kapsanmadgn fark edebilirsiniz. Bunun nedeni 0 ve 255 nu-
maral oktetlerin ozel amaclar icin ayrlms olmasndandr. Bir adreste, host (konak) bilgisayar tarafndaki
bitlerin tamam 0 ise o adres ag belirler, eger bu bitlerin tamam 1 ise bu adres yayn (broadcast, agn
tumune yayn) adresi olarak bilinir. Buna gore 149.76.255.255 gecerli bir makine adresi belirtmez onun
yerine 149.76.0.0 agndaki tum makineleri belirtir.
0.0.0.0 ve 127.0.0.0 ag ise sizin kendi makinenizdeki IP trafigini rahatlatmak amacl, sizin kendi
makinenizi ifade eder. Birincisine ontanml rota (default route) digerine de geridonus (loopback) adresi
denir.
Yani bilgisayarnz icinde kalan, yerel aga ckmanz gerektirmeyen durumlarda 127.0.0.1 IP adre-
sini kullanarak yine kendi bilgiyarnz icinde, programlarn haberlesmelerinisaglayabilirsiniz. Genelde,
127.0.0.1 adresi, ksa devreymis gibi davranan, geridonus arabirimi (loopback interface) olarak adland-
rlan ve sizin kendi makinenizde bulunan ozel bir arabirime ayrlmstr.

16.3 IP adresleri ile Ethernet arayuzunu eslestirmek


Ethernet tabanl yerel agn (LAN) TCP/IP ile calsabilmesi icin her makinann Ethernet kart adresine
(donanm adresine) bir IP adresi karslk getirmeniz, baska bir deyisle bunlar birbirleri ile eslestirmeniz
gerekir. Bunu Linux ortamnda yapmann kolay bir yolu vardr.
Aslnda eger halihazrda Linux ortamnda Ethernet kullanyorsanz mevcut Linux dagtmnzn bas-
langc betiklerinde suna benzer bir komut vardr:

ifconfig eth0 192.168.1.1 broadcast 192.168.1.255 netmask 255.255.255.0

Yukardaki ifconfig komutu eth0 (dolays ile eth0n donanm adresini) 192.168.1.1 numaral IP
adresi ile eslestirir. Bu islevin yan sra ayn komut satr IP ile ilgili diger bilgileri de sisteme soyler:
broadcast adresi (192.168.1.255) ve ag maskesi (netmask) (255.255.255.0). Bu komutu calstrldgnda
eth0 arayuzunuz aktive olmustur ve bir IP adresine sahiptir.

16.4 ifconfig -a kullanm


Halihazrda calsmakta olan tum ag cihazlarnz ifconfig -a komutunun cktsnda gorebilirsiniz:

eth0

31
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

Link encap:Ethernet inet addr:192.168.1.1

HWaddr 00:01:02:CB:57:3C

Bcast:192.168.1.255

UP BROADCAST RUNNING MULTICAST MTU:1500

Mask:255.255.255.0 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0


dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX
bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interrupt:5 Base address:0xc400
Link encap:Local Loopb
ack inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1065 errors:0 dropped:0 overruns:0 frame:0 TX packets:1065 errors:0
dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2
62542 (256.3 Kb) TX bytes:262542 (256.3 Kb)

lo

Yukarda ayarlar yaplms bir eth0 arayuzunun yansra bir lo (localhost) arayuzu gormektesiniz. lo
isimli arayuz ozel bir sanal ag arayuzudur ve herhangi bir ag baglants olmamas halinde de TCP/IP
uygulamalarnn bilgisayarda yerel olarak calsmalarn saglamak icin gelistirilmistir.

16.5 TCP/IP calsyor!


Bir kez tum ag arayuzleriniz aktive edilip IP adresleri ile eslestirildi mi Ethernet tabanl agnz artk
TCP/IP trafigini tasmak icin kullanlabilir. Sisteminizdeki bilgisayarlar birbirlerine IP adreslerini kulla-
narak erisebilirler ve bilgisayarlarnza ping, telnet, ssh gibi komutlarla erisebilirsiniz.

16.6 Isim cozumleme snrlar


Su asamada her ne kadar bilgisayarlarnza ping 192.168.1.1 gibi komutlarla erisseniz de onlara tandk
isimlerle hitap edemezsiniz. Soz gelimi ping mybox yazarsanz calsmaz. Bunun icin yapmanz gereken
her Linux yuklu bilgisayarda /etc/hosts isimli bir dosya olusturmak ve bu dosyann icinde IP adreslerine
karslk istediginiz isimleri yazmaktr.
Yani mesela uc bilgisayardan olusan bir ag var ise /etc/hosts dosyas sunun gibi olacaktr:

127.0.0.1 localhost
192.168.1.1 mybox mybox.gentoo.org
192.168.1.2 testbox testbox.gentoo.org
192.168.1.3 mailbox mailbox.gentoo.org

Soz konusu /etc/hosts dosyasnda zorunlu olarak localhost 127.0.0.1 eslestirmesi olduguna dikkat
edin. Ayrca yerel agdaki tum bilgisayarlarn isimleri (hostname) ksa ve uzun formatta tanmlanmstr.
Bu /etc/hosts dosyasn diger bilgisayarlara da kopyaladktan sonra artk bilgisayara IP adresleri yerine
tanmladgmz isimlerle hitap edebiliriz, mesela artk ping mybox gibi bir komutu calstrabiliriz!

16.7 DNS kullanm


Kucuk capl yerel aglarda yukardaki yontem pratik gibi gorunebilir ama bilgisayar says arttkca isim-
adres eslestirmesinin bu sekilde yaplmas cok bas agrtr. Bu tur durumlarda IP-makina ismi eslestir-
mesini tek bir bilgisayarda depolayp bir DNS sunucusu calstrmak cok daha pratik olacaktr (DNS -
domain name service server - alan ad servisi sunucusu). Boylece her makinay oyle bir ayarlayabiliriz ki
bir isme karslk hangi IP adresinin karslk geldigini tek bir merkezi makinaya sorup ogrenebilir. Bunu
yapmann yolu her makinada /etc/resolv.conf isimli bir dosya olusturmaktr. Bu dosyann icerigi sunun
gibidir:

domain gentoo.org nameserver 192.168.1.1 nameserver 192.168.1.2

32
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

Yukardaki /etc/resolv.conf ayar dosyasna gore uzun formatta verilmeyen her isim (testbox.gentoo.org
yerine testbox demek gibi) yerel agdaki bir makinann ismi olarak kabul edilmelidir. Yine yukardaki
dosyadaki bilgiler 192.168.1.1 adresli bir makinada bir DNS sunucunun calstgn ve 192.168.1.2 adresli
makinada da yedek DNS sunucusunun beklemekte oldugunu soylemektedir. Aslnda aga bagl hemen
hemen tum Linux PCler resolv.conf dosyasnda ontanml bir isim sunucu icerirler (aga aktif olarak bagl
olmasalar bile). Bunun sebebi ISS (Internet Servis Saglayc) sirketinin sundugu DNS sunucuyu kullanmak
durumunda olmalardr.
Boylece kullanclar Web tarayclarn acp, bir IP adresi yerine ibm.com gibi aklda kolay kalan bir
isim yazp web sitesine baglanabilirler.

16.8 Dsarya baglanmak


Madem az once Internete baglanmaktan bahsettik 3 sistemden olusan basit agmz dsarya nasl
baglayabiliriz konusuna gelelim. Tipik olarak bir tur router satn alabilir ve bunun bir ucunu bizim
Ethernet tabanl yerel agmza diger ucunu da DSL, kablo modem, T1 ya da normal telefon hattna
baglayabiliriz. Bu routera belli bir IP adresi verilir ve boylece bu cihaz agmzdaki sistemlerle iletisim
kurabilir. Daha sonra agmzdaki her bilgisayar ontanml olarak bu router Internete cks kaps (ga-
teway) kabul edecek sekilde duzenleyebiliriz. Yani sistemdeki makinalardan birinin adresinin icermeyen
her veri paketi routera yonlendirilir ve sonra agn dsna ckmas gereken bu paketin yonlendirilmesi
ile artk router ilgilenir. Genellikle kullandgnz dagtmn baslangc betikleri (initialization scripts) si-
zin icin ontanml olarak router ayarlarn yaparlar. Bunu gerceklestirmek icin sisteminiz calstrlrken
asagdakine benzer bir komut kullanlr:

route add -net default gw 192.168.1.80 netmask 0.0.0.0 metric 1

Yukardaki komuta gore ontanml router adresi 192.168.1.80dir. Sisteminizde ayarlar yaplms tum
routerlarla ilgili bilgileri edinmek icin route -n komutunu verebilirsiniz. Hedef adresi olan 0.0.0.0 yol
ontanml yoldur.

16.9 Ev odevi
Su ana dek Linux ag islemlerine dair en temel kavramlardan bahsettik. Maalesef uygun IP adresini secmek,
ag maskeleri, broadcast adresleri, vs. gibi her konuya deginecek yerimiz ve vaktimiz yok. Bununla birlikte
Linux ve ag islemleri hakknda en cok ve en detayl dokumantasyon uretilmis konudur. Buradaki temel
bilgileri kavradktan Linuxdoc.org sitesindeki Guides ksmnda yer alan Linux Network Administrator
Guiden ozellikle 2 ile 6 arasndaki bolumlerini okumanz sizin icin cok faydal olacaktr!

17 Internet servisleri ve inetdye giris


Tek bir Linux sistemi duzinelerce hatta yuzlerce ag servisi sunabilir. Ornegin telnet programn kul-
landgnzda uzaktaki bir sistemin telnet hizmetine erisirsiniz. Ya da mesela ftp programn kullandgnzda
uzaktaki bir sistemin ftp hizmetine erisirsiniz. Bu servisleri sunmak isteyen uzaktaki sunucu sistem ya
tek tek her bir servisle ilgili yazlm calstrr ve baglant kurulmasn bekler (orn. /usr/sbin/in.telnetd ve
/usr/sbin/in.ftpd programlar) ya da inetd isimli bir yazlm calstrr. inetd yazlm gelen baglant kurma
taleplerini dinler ve uygun servisle ilgili yazlm calstrr. Bu yuzden de inetd ayn zamanda Internet
supersunucusu olarak da bilinir. Tipik bir Linux kurulumunda inetd gelen baglantlarn cogu ile basa
ckmak uzere ayarlanmstr. Sadece birkac program (sshd ve lpd gibi) inetdden bagmsz olarak agdan
gelen ve kendilerini ilgilendiren veri paketleri ile ilgilenirler.

17.1 inetdyi ayarlamak: /etc/services


Az once inetdnin gelen baglant taleplerini turlerine gore snflandrdgn soylemistik. Her baglant ta-
lebi temelde bir TCP/IP paketidir ve baslk ksmnda baz tanmlayc bilgiler barndrr. Bizi en cok
ilgilendiren ksmlar kaynak adresi, hedef adresi, protokol ve port numaras bilgilerini iceren ksmlardr.
Bilgisayar gelen baglant talepleri inetd tarafndan port numaras ve protokole gore (genellikle TCP ya
da UDP, inetd tarafndan sunulabilen tum servislerin bir listesi icin bkz. /etc/protocols) snflandrlr.
Her satrn format asagdaki gibidir:

service-ismi port-numaras/protocol-ismi aliases # yorumlar

33
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

Ornek bir /etc/services dosyasnda bizi ilgilendiren satrlara bir goz atalm:

# grep ^[^#] /etc/services | head -5

tcpmux echo echo discard discard 1/tcp 7/tcp 7/udp 9/tcp 9/udp # TCP port service multiplexer

sink null sink null

Genellikle /etc/services halihazrda faydal tum servis isimlerini ve port numaralar bilgilerini icerir.
Eger kendi servislerinizi ve port numaralarnz ekleyecekseniz oncelikle atamalar yaplms port nu-
maralarn bilmeniz gerekir.

17.2 inetdyi ayarlamak: /etc/inetd.conf


inetd yazlmn asl konfigurasyon dosyas /etc/inetd.confdir ve su formata sahiptir:

service-name socket-type protocol wait-flag user server-program

Servisler inetd.conf icinde port numaras ile degil servis ismi ile anldklar icin bunlarn onceden
/etc/services dosyasnda tanmlanms olmas gerekir.
Ornek bir /etc/inetd.conf dosyasnda bizi ilgilendiren satrlara bir goz atalm (orn. telnet ve ftp):

# grep ^telnet /etc/inetd.conf

telnet stream tcp nowait root /usr/sbin/in.telnetd

# grep ^ftp /etc/inetd.conf

ftp stream tcp nowait root /usr/sbin/in.ftpd -l -a

Her iki servis icin de kullanlan TCP protokoludur, servislerle ilgili yazlmlar (in.telnetd veya in.ftpd)
root kullancs olarak calstrlacaktr. /etc/inetd.conf dosyasndaki bilgi giris alanlarnn detayl ackla-
mas icin inetd(8) man sayfasna bakabilirsiniz.

17.3 Servisleri iptal etmek


inetd ayar dosyasnda bulunan bir servisi iptal etmek cok basittir. Sadece ilgili satrn basna bir diyez
(#) sembolu koymak sureti ile o satr yorum satr haline getirin. Satr silmemeniz menfaatiniz icabdr
cunku daha sonra o servisi yine etkin hale getirmek isteyebilirsiniz. Ornegin baz sistem yoneticileri
guvenlik sebeplerinden oturu (iletisim sifreli olarak gerceklestirilmedigi icin) telnet servisini iptal ederler:

# vi /etc/inetd.conf [istenmeyen satrn basna # karakterini koyun ve kaydedip ckn]


# grep ^.telnet /etc/inetd.conf
# telnet stream tcp nowait root /usr/sbin/in.telnetd

17.4 inetdyi bir baslangc betigi ile baslatmak/durdurmak


Yukarda bahsettigimiz turden degisiklikleri /etc/inetd.conf dosyas uzerinde yaptktan sonra bunlarn
gecerli hale gelebilmesi icin inetd servisini yeniden baslatmanz gerekmektedir. Pek cok Linux dagtm
bunyesindeki /etc/init.d ya da /etc/rc.d/init.d dizininde ilgili betik dosyasn barndrr:

# /etc/rc.d/init.d/inet stop
Stopping INET services: # /etc/rc.d/init.d/inet start Starting INET services:

In fact, you can usually use "restart" as a shortcut:

[ OK ]

[ OK ]

# /etc/rc.d/init.d/inet restart Stopping INET services: Starting INET services:

[ [ OK OK ] ]

34
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

17.5 inetdyi manuel olarak durdurmak/baslatmak


Eger yukarda bahsi gecen betik sizin icin ise yaramazsa babadan kalma yontemi kullanabilirsiniz, bu
daha da kolaydr. inetd yazlmn durdurmak icin killall komutu isinizi gorur:

# killall inetd

Baslatmak icin komut satrndan komutu yazmanz yeterli olacaktr. Otomatik olarak arkaplanda
calsmaya baslar:

# /usr/sbin/inetd

Bunlarn dsnda bir de inetdyi durdurmadan ayar dosyasn yeniden okumasn saglamann kestirme
bir yolu vardr: prosese HUP sinyalini gondermek:

# killall -HUP inetd

Bu asamada sisteminize telnet ya da ftp programlar ile baglanamamanz gerekiyor cunku telnet ve ftp
servisleri iptal edilmis durumda. Emin olmak icin telnet localhost komutunu deneyin. (Eger bu sisteme
telnet ya da ftp ile erismeniz gerekiyorsa yapmanz gereken az once # ile iptal ettiginiz satrlarn basndaki
# karakterini kaldrmak ve inetdyi yeniden aktive etmektir):

# telnet localhost
telnet: Unable to connect to remote host: Connection refused

17.6 TCP wrappersa giris


tcp wrappers paketi tcpd isimli kucuk bir daemon olup inetd tarafndan ilgili servis yerine cagrlr. tcpd
program her gelen baglant talebinin kaynak adresini bir log dosyasna kaydeder ve sadece guvenilir
sistemlerden gelen baglantlara izin verecek sekilde filtreleme yapabilir. tcpd, kullanmak icin yapmanz
gereken inetd ayar dosyasna asagdaki gibi bir satr yazmaktr:

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a


telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

17.7 TCP wrappers ile kayt tutma


Ontanml olarak baglantlar snrlandrlmamstr ancak bunlarn kayd tutulur. Ornegin yukardaki
degisikligi yaptktan sonra etkin olmas icin inetdyi yeniden baslatalm ve ksa bir inceleme kayd tutulan
baglantlar gorelim:

# telnet localhost login: (press <ctrl-d> to abort)


# tail -1 /var/log/secure
Feb 12 23:33:05 firewall in.telnetd[440]: connect from 127.0.0.1

telnet ile baglanma talebi gordugunuz gibi tcpd tarafndan log dosyasna kaydedilmistir ve buradan
da tcpd yazlmnn calsmakta oldugunu anlayabiliriz. tcpd surekli bir kayt hizmeti sundugundan tek
tek servislerin log tutma isi ile ugrasmasna gerek kalmams olur. Bu bakmdan tcpdnin yaptg is,
baglantlar yakalayp ilgili servisleri baslatan inetdnin yaptg ise benzer. Linuxun (UNIXin) basitligi
olaganustu degil mi?

17.8 TCP wrappers kullanarak erisimi yerel kullanclar ile kstlamak


tcpd program ile ilgili olarak iki ayar dosyas vardr: /etc/hosts.allow ve /etc/hosts.deny. Bu dosyalar
asagdaki sekle benzerler:

daemon_list : client_list [ : shell_command ]

Erisim izni su sraya gore verilir ya da reddedilir.

Arama ilk bulunan eslesmede durdurulur.

/etc/hosts.allow dosyasnda eslesen bir kullanc bulundugunda erisim izni verilir.

35
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

/etc/hosts.deny dosyasnda eslesen bir kullanc bulundugunda erisim reddedilir. Eger bir eslesme
bulunmaz ise izin verilir.
Ornegin sadece kendi makinamzdaki kullanclara izin vermek istersek /etc/hosts.deny dosyasnda
bir erisim politikas olustururuz (kaynag localhost olanlar haricindeki tum baglantlar reddet) :
in.telnetd: ALL EXCEPT LOCAL

17.9 TCP wrappers ile sadece bilinen kullanclara izin vermek


Bu asamada inetdyi yeniden yuklemeye gerek yoktur cunku her telnet talebinde tcpd yeniden cagrlr.
Hemen bir deneme yapabiliriz:
# telnet box.yourdomain.com
Trying 10.0.0.1... Connected to box.yourdomain.com. Escape character is ^].
Connection closed by foreign host.

Al sana! Reddedildin! (Reddedilmenin basar anlamna geldigi ender anlardan biridir, tadn ckarn
;-) Ag icindeki kullanclara izin vermek icin istisnai durumu /etc/hosts.allow dosyas icine yazmamz
yeterlidir:
in.telnetd: .yourdomain.com

Bu noktada artk sisteme telnet ile yeniden girebilir hale geldik. Simdiyi kadar anlattklarmz tcp -
wrappers yazlmnn sadece birkac yuzeysel ozelligine isaret ediyordu. tcp wrappers ile ilgili cok daha
detayl bilgi mevcuttur ve bunlar tcpd(8) ile hosts access(5) man sayfalarnda bulabilirsiniz.

17.10 xinetd: gelistirilmis (extended) inetd


inetd klasik ve geleneksel Internet supersunucusu olmakla birlikte son donemlerde bu sistem yeniden
yazlms ve guvenlikle de ilgili olmak uzere daha ozellikli hale getirilmistir. Red Hat ya da Debian gibi
pek cok modern Linux dagtmnda xinetd program inetdnin yerini alr. Bu gelismis yazlmn ozellikleri
arasnda sunlar da vardr:
Erisim kontrolu (TCP wrappers hazr olarak gelir)
Gelismis kayt tutma yetenegi (baglant sureleri, basarsz baglantlar, vs.)
Baska bir makinadan servislerin yonlendirilmesi
IPv6 destegi
Tek bir ayar dosyas yerine parcal ayar dosya yaps

17.11 xinetd ayarlamas


xinetd ayar dosyas ismi /etc/xinetd.confdur. Genellikle bu dosya sadece birkac satr barndrr ve birkac
ayar icerir, detayl ayarlamalar baska dosyalara havale edilir:
# cat /etc/xinetd.conf

defaults {

instances log_type = 60 = SYSLOG authpriv

log_on_success = HOST PID log_on_failure = HOST RECORD includedir /etc/xinetd.d }

Yukarda gordugunuz son satr xinetdye detayl ayarlar /etc/xinetd.d dizinindeki dosya parcackla-
rndan okumasn soyler. rectory. telnet ile ilgili bolume bakalm:
# cat /etc/xinetd.d/telnet

service telnet {

flags socket_type wait user server = REUSE = stream = no = root = /usr/sbin/in.telnetd

log_on_failure += USERID }

36
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

Gordugunuz gibi xinetdyi ayarlamak zor degildir ve inetdye kyasla daha kolaydr. xinetd ile ilgili
detayl bilgilere xinetd(8), xinetd.conf(5) ve xinetd.log(5) man sayfalarndan erisebilirsiniz. Web uzerinde
de inetd, tcp wrappers ve xinetd ile ilgili bir hayli detayl bilgi bulabilirsiniz. Lutfen bu dokumann
Kaynaklar ksmnda verilen kaynaklar incelemeyi ihmal etmeyin.

18 Guvenlige Genel Baks - Giris


Tamamen guvenli bir sistem kurmak imkanszdr. Ancak sabrl ve dikkatli sekilde calsarak kuracagnz
Linux sunucularnz crackerlarn, script-kiddielerin ve diger kotu adamlarn cogundan koruyabilirsiniz.
Baz standart ve onemli noktalara dikkat ederek sisteminiz uzerinde denemeler yapmaya calsan supheli
(ve genellikle amator) sahslar caydrabilirsiniz. Ancak unutmayn ki sadece burada anlatlan admlar ta-
kip ederek %100 guvenli bir sistem kurmanz mumkun degildir. Bunun yerine konu ile ilgili ana baslklara
deginecek ve guvenlik konusunun temellerine giris yapmanz icin basit ornekler verecegiz. Linux sistem
guvenligi kabaca ikiye ayrlabilir: dahili guvenlik ve harici guvenlik. Dahili guvenlik ile kast edilen sis-
temdeki kullanclarn istemeden ya da bilincli olarak sisteme zarar vermelerini engellemektir. Harici
guvenlik ile kast edilen ise ack olarak izin verilip yetkinlendirilmis kullanclar haricindeki kullanclarn
sisteme izinsiz girislerini engellemektir. Bu bolumde once dahili sonra da harici guvenlik konularna ksaca
deginecegiz ve genel yontemler ile ipuclar ile bolumu tamamlayacagz.

18.1 Dosya izinleri ve log dosyalar


Dahili guvenlik agdaki kullanclarnza ne kadar guvenebileceginize bagl olarak bir hayli karmask bir
gorev halini alabilir. Buradaki yordamlar ksaca bir kullancnn hassas verilere erismesi ve sistem kay-
naklarn somurmesini engellemeye yonelik olacaktr. Dosya izinleri ile ilgili olarak, bunlar uc durumda
degistirmek isteyebilirsiniz: Oncelikle /var/log dizinindeki dosyalar herkesin okuyabilmesi gerekmez. Sis-
temde root kullancs dsnda kimsenin log dosyalarna burnunu sokmas icin gecerli bir sebebi yoktur.
syslog ile ilgili olarak LPI 101 Bolum 4e ve logrotate(8) man sayfasna bakabilirsiniz.

18.2 root kullancsnn diger dosyalar ile ilgili izinler


root kullancsnn nokta ile baslayan dosyalarnn da normal kullanclar tarafndan okunmasnn engel-
lenmesi gerekir. ls -la komutu ile root kullancsnn ev (home) dizinindeki dosyalarn izinlerini ve duzgun
sekilde korunup korunmadklarn mutlaka kontrol edin. Isterseniz tum dizini sadece root tarafndan oku-
nur hale de getirebilirsiniz:

# cd
# pwd
/root
# chmod 700 .

18.3 Kullanc dosyalarnn dosya izinleri


Ve son olarak da kullanc dosyalarna bakalm. Genellikle bu dosyalar ilk yaratldklarnda ontanml
olarak herkes tarafndan okunabilir sekilde yaratlrlar. Kullanclarn cogu boyle bir seyi bilmez, beklemez
ve zaten bunun iyi bir uygulama oldugu da soylenemez. Bunu engellemek icin /etc/profile dosyasndaki
umask asagdaki gibi bir sey yapabilirsiniz:

if [ "$UID" = 0 ]; then # root user; set world-readable by default so that


# installed files can be read by normal users.
umask 022 else # make user files secure unless they explicitly open them
# for reading by other users
umask 077
fi

umaskla ve ayarlanmas ile ilgili detayl bilgi icin umask(2) ve bash(1) man sayfalarna basvurabilir-
siniz. umask(2) man sayfasnn ayn isimli C fonksiyonundan bahsettigine dikkat edin, bu sizi sasrtmasn
cunku anlatlan bilgiler dogrudan bash icinde kullanlan umask komutu icin de gecerlidir. Ayrca LPI 101
Bolum 3te da bununla ilgili detaylar vardr.

37
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

18.4 SUID/SGID programlarn bulmak


Izinsiz olarak ve gizlice root erisimi saglamaya calsan kotu niyetli bir kullancnn ilk yapacag sey sis-
temde SUID ya da SGID biti ayarlanms programlarn bulmaya calsmak olacaktr. LPI 101 Bolum 3te
bahsettigimiz gibi bu bitler ilgili programlarn onlara sahip olan kullanc ya da grubun izinleri kapsamnda
calsmasna yol acarlar. Elbette bu durum baz programlarn duzgun olarak calsmas icin gereklidir. An-
cak sorun su ki programdaki bir hata onu calstran kullancya gereginden fazla hak tannmasna yol
acabilir. SUID ya da SGID biti ayarlanms programlar dikkatli sekilde incelemeli ve buna gercekten ih-
tiyaclar olup olmadgna karar vermelisiniz. Sisteminizde hic ihtiyac duymadgnz SUID/SGID program-
lar bile bulunuyor olabilir. Bu tur programlar aramak icin find komutundan faydalanabiliriz. Isterseniz
gelin /usr dizinini bir tarayalm:

# cd /usr
# find . -type f -perm +6000 -xdev -exec ls {} \;

-rwsr-sr-x 1 root root 593972 11-09 12:47 ./bin/gpg


-r-xr-sr-x 1 root man 38460 01-27 22:13 ./bin/man
-rwsr-xr-x 1 root root 15576 09-29 22:51 ./bin/rcp
-rwsr-xr-x 1 root root 8256 09-29 22:51 ./bin/rsh
-rwsr-xr-x 1 root root 29520 01-17 19:42 ./bin/chfn
-rwsr-xr-x 1 root root 27500 01-17 19:42 ./bin/chsh
-rwsr-xr-x 1 lp root 8812 01-15 23:21 ./bin/lppasswd
-rwsr-x-- 1 root cron 10476 01-15 22:16 ./bin/crontab

Karsmza ckan listede dikkatle incelenmesi gereken bir aday var : lppasswd isimli dosya CUPS
yazdrma sisteminin bir parcasdr. Kendi sisteminizde yazc servisi sunmuyorsanz bu programa da ihti-
yacnz yoktur. lpppasswd programnda herhangi bir hata ya da ack olmayabilir fakat kullanmadgmz bir
program sistemde bulundurarak neden risk alalm ki? Benzer sekilde kullanmadgnz tum servisleri iptal
etmekte fayda vardr. Ihtiyacnz oldugu anda nasl olsa kolayca bunlar yeniden etkin hale getirebilirsiniz.

18.5 ulimit ile kullanclarn limitlerini ayarlamak


bash kabugundaki ulimit komutu belli bir kullancnn hangi kaynaga ne olcude erisebilecegini belirle-
menizi ve kstlamanz saglar. Bir kez bir limitin degeri azaltld m o proses calsrken bunu bir daha
artrmann yolu yoktur. Ayrca o proses ile ilgili limitlere o prosesin tum cocuk prosesleri de maruz kalr.
Bu ksaca su demektir: /etc/profile dosyasnda yapacagnz ulimit ayarlar tum kullanclar etkileye-
cektir (kullanclarn bash ya da /etc/profile dosyasn okuyan bir kabuk yazlmn calstrdklarn var
sayyoruz). Mevcut limit durumunu ogrenmek icin ulimit -a komutunu kullanabiliriz:

# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
stack size (kbytes, -s) unlimited
cpu time (seconds, -t) unlimited
max user processes (-u) 3071
virtual memory (kbytes, -v) unlimited

Bu limitleri sistemin guvenligini artracak ve kullanclar rahatsz etmeyecek sekilde ayarlamak cok
zor olabilir bu yuzden ulimit ile ayarlama yaparken cok dikkatli olmalsnz.

18.6 ulimit ile CPU zamann snrlamak


Bir ulimit ornek uygulamas olarak bir prosesin CPU zamann 1 saniye ile kstlamay ve sonra prosesi
donguye sokarak zaman asmna ugratmay deneyelim. Yeni bir bash prosesi baslatmay unutmayn aksi
takdirde bu denemenin sonucunda sistemden ckarsnz!

38
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

# time bash
# ulimit -t 1
# while true; do true; done
Killed

real 0m28.941s
user 0m1.990s
sys 0m0.017s

Yukardaki ornekte user zaman art sys zaman proses tarafndan kullanlan toplam CPU za-
mann verir. bash prosesi 2 saniye isaretin gelince Linux cekirdegi 1 saniye limitinin gecildigini tespit
eder ve proses sonlandrlr. Harika degil mi?
Not: Bir saniyelik limit sadece bir ornekti. Sakn kullanclarnza boyle bir sey yapmayn! Birkac saatlik
limit bile sorun yaratabilir cunku X grafik sunucusu gercekten CPU zamann cok kullanr. Gercek bir
uygulama icin CPU zaman haricinde bir kaynag kstlamay dusunun.

18.7 Kullanc limitleri, devam


Eszamanl (simultane) loginler ya da disk kullanm miktar gibi kaynaklar da kstlamak isteyebilirsi-
niz ancak bunlar ulimit ile ilgili konular degildir. Bu tur kstlamalar icin asagdaki yazlm paketlerini
inceleyebilirsiniz:

Clobberd yazlm kullanc aktivitesini gozetler ve zaman, ag kullanm gibi degerleri olcer.

Idled yazlm cok uzun sure is yapmayan, bos duran kullanclar ya da uzun suredir sisteme bagl
olan kullanclar sistemden atabilir.

Ayn zamanda kullanclarn belli bir miktardan fazla login olmasn da engelleyebilir.

LPI 101 Bolum 4te dosya sistemi kotalar ile kstlama anlatlmstr.

18.8 Gizli girislerin engellenmesi (intrusion prevention)


Harici guvenlik iki kategoride ele alnabilir: Gizli girislerin engellenmesi ve gizli girislerin tespit edil-
mesi. Gizli giris engelleme tedbirleri yetkisiz kullanclarn sisteme girislerini engellemek icindir. Eger bu
tedbirler ise yaramazsa gizli giris tespit sistemleri ile izinsiz girisin ne zaman gerceklestirildigi ve hasar
miktar tespit edilebilir. Tam bir Linux kurulu sistem oldukca karmask bir sistemdir, kurulmus olan her
seyin kaydn tutmak hele de her paketin guvenligi ile ugrasmak kolay bir is degildir. Paket says az ise
bunlar kontrol etmek de kolay olacaktr. Gizli giris onlemenin ilk kural ihtiyac duymayacagnz paket-
leri kurmamak ya da kaldrmaktr. Paket yonetim sistemlerine genel baks icin LPI 101in 4. bolumune
bakabilirsiniz.

18.9 Kullanlmayan ag servislerini kapatmak (supersunucu)


Kullanlmayan ag servislerini kapatmak gizli girisleri engellemek icin atlacak ilk admlardan biridir.
Ornegin inetd ya xinetd gibi bir Internet supersunucusu calstryorsanz genellikle in.rshd, in.rlogind ve
in.telnetd gibi servisler ontanml olarak acktr. Bu ag servislerinin hemen hemen tamam ssh gibi daha
guvenli alternatiflere sahiptirler. inetd servislerini iptal etmek icin /etc/inetd.conf dosyasndaki ilgili servis
satrlarnn basna # sembolu yazmak sureti ile bunlar yorum satr haline getirmek ve inetdyi yeniden
baslatmak yeterlidir.
xinetd kullanyorsanz servisleri iptal etmek icin benzer seyleri /etc/xinetd.d icindeki ilgili dosya uze-
rinde yapmanz yeterli olacaktr. Ornegin telnet servisini kapatmak icin ya /etc/xinetd.d/telnet dosyasnn
iceriginin tamamn yorum satr haline getirin veya basitce dosyay silin. Sonra xinetdyi yeniden baslatn.
Eger inetd ile birlikte tcpd kullanyorsanz ya da supersunucu olarak xinetd kullanyorsanz gelen baglant
taleplerini sadece guvenilir bilgisayarlarla snrlama imkannz vardr. tcpd ile ilgili olarak bu klavuzun
onceki bolumlerine bakabilirsiniz.
xinetd icin ise xinetd.conf(5) man sayfasnda only from ifadesini aratn.

39
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

18.10 Kullanlmayan ag servislerini kapatmak (tek basna calsan sunucular)


Baz ag servis sunucular inetd ya da xinetd tarafndan baslatlmaz kendi baslarna calsrlar. Birkac
ornek vermek gerekirse: atd, lpd, sshd, nfsd ve benzerleri. Aslnda inetd ve xinetd de kendi baslarna
calsan sunuculardr ve ilgili ayar dosyalarndaki satrlarn hepsini yorum satr haline getirdiyseniz bunlar
tamamen kapatmay da dusunebilirsiniz. Kendi basna calsan sunucular genellikle init sistemi tarafndan
bilgisayar aclrken ya da runlevel degisirken devreye sokulurlar.
init sisteminin belli bir sunucuyu baslatmasn engellemek icin ilgili runlevel dizinindeki ilgili dizinin
baslatma betigine yonlendirilmis sembolik baglanty bulun ve bunu silin. runlevel dizinleri /etc/rc3.d veya
/etc/rc.d/rc3.d gibi isimlere sahiptir (runlevel 3 icin). Tabii bu arada diger runlevellarla ilgili dizinleri de
kontrol etmek isteyebilirsiniz. Durdurmak istediginiz servislerle ilgili sembolik baglantlar sildikten sonra
halihazrda aktif olan sunucuyu da durdurmanz gerekmektedir. Bunu yapmann en iyi yolu ilgili servisin
init betigini kullanmaktr ki bu da genellikle /etc/init.d veya /etc/rc.d/init.d dizininde bulunur. Ornegin
sshd yazlm durdurmak icin suna benzer bir komut vermeniz yeterli olacaktr:

# /etc/init.d/sshd stop
* Stopping sshd... [ ok ]

18.11 Degisiklikleri test etmek


inetd ya da xinetd ayarlarnz duzenledikten ve gerekli kstlamalar yaptktan sonra veya bir sunucuyu
init betigi ile durdurduktan sonra islerin yolunda gidip gitmedigini anlamak icin sisteminizi test etmeli-
siniz. TCP portlarn telnet istemcisi ile ve servis ismini ya da port numarasn vererek test edebilirsiniz.
Ornegin rlogin servisinin iptal edildiginden emin olmak icin:

# grep ^login /etc/services


login 513/tcp

# telnet localhost 513


Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

Standart telnet istemcisine ek olarak sisteminizin acklgn test etmek icin faydalanabileceginiz
birkac becerikli yazlm daha vardr. netcat ve nmap isimli yazlmlar bunlar arasnda en meshur olan-
lardr. ncat bilgisayar aglarnn Isvicre Caks olarak bilinir, temel olarak yaptg ici ag baglantlar kurup
TCP ya da UDP protokollerini kullanarak veri okuyup yazmaktr. nmap ise ag kesfetmek veya guvenligi
denetlemek icin kullanlan bir aractr. Esas olarak nmap belli bir adresteki (ya da adreslerdeki) bilgisa-
yarlarn uzerindeki ack portlar tarayp bunlar tespit etmeye yarar. Bu faydal programlarla ilgili web
adreslerini en sondaki Kaynaklar bolumunde bulabilirsiniz.

18.12 Bakm yaparken kullanclarn girisini engelleme


Yukardaki yontemlere ek olarak loginleri yani sisteme girisleri engellemenin cok genel bir yontemi vardr:
/etc/nologin isimli bir dosya olusturmak. Bu yontem sadece ksa sureli sistem bakm islemlerinde kul-
lanclarn sisteme girisini engellemek icin kullanlr. root kullancs sisteme girebilir fakat diger (normal)
kullanclar giremez. Ornegin:

# cat > /etc/nologin ===== System is currently undergoing maintenance until


2:00. Please come back later. ===
# telnet localhost login: agriffis

Password:
Login incorrect
==== System is currently undergoing maintenance until 2:00.
Please come back later. ===

Bakm islemleriniz bitince soz konusu dosyay silmeyi sakn unutmayn, aksi takdirde hickimse sisteme
giremez. (Yok hayr, ben boyle bir dalgnlk sonucu insanlara sac bas yoldurtmadm, kesinlikle bunu yapan
ben degildim ;-)

40
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

18.13 iptables (ipchains) konusuna giris


iptables ve ipchains komutlar calsmakta olan bir Linux cekirdeginin ag paket filtreleme kurallarn
incelemek ve ayarlamak icin kullanlr. ipchains komutu 2.2.x surumu cekirdekler icin kullanlyordu ve
her ne kadar 2.4.x serisi cekirdekler uzerinde kullanlabilse debu komutun yerini iptables komutu almstr.
Paket filtreleme kurallar hem firewall hem de router aktivitelerini ayarlamak icin kullanlabilir. Mevcut
kurallar incelemek icin iptables komutunu -L parametresi ile kullanabilirsiniz:

# iptables -L
Chain INPUT (policy ACCEPT) target prot opt source
Chain FORWARD (policy ACCEPT) target prot opt source
Chain OUTPUT (policy ACCEPT) target prot opt source

destination

destination

destination

Bu ornekte gordugumuz sonuna kadar ack bir sistedir, herhangi bir routing ve firewall islevi yoktur.

18.14 iptables ve Linux paket filtresi


Linux paket filtresini etkin olarak kullanmak saglam bir TCP/IP bilgisini ve bunun Linux cekirdeginde
nasl uygulandgn bilmeyi gerektirir. netfilter ana sayfas (klavuzun sonundaki kaynaklar ksmna bakn)
daha cok bilgi edinmek icin uygun bir baslangc noktasdr. Kendi kural setinizi saglkl olusturabilecek
seviyeye gelene dek size yardmc olabilecek bircok hazr betik vardr. Bunlardan en kapsaml olannn
ismi gShield isimli bir betik dosyasdr (kaynaklar bolumune bakn). Bunyesinde bircok acklama satr
barndran bu ayar dosyasn kullanarak en cok kullanlan paket filtreleme kurallarn sisteminizde aktive
edebilirsiniz.

18.15 Gizli girislerin tespiti - syslog dosyalar


Gizli girislerin tespit konusu, sistemlerini ozel gizli giris tespit sistemlerine (IDS - Intrusion Detection
System) emanet etmis sistem yoneticileri tarafndan genellikle ihmal edilir. Maalesef boyle bir durum,
kotu niyetli biri soz konusu ozel sistemde bir ack bulup bunu gecebilirse karssna bir hayli kolay girilebilir
bir sistem ckacak demektir ve sistem yoneticisi uzunca bir sure bu durumda haberdar olmayabilir.
Gizli giris tespiti yapmann temel yolu sistem kaytlarna dikkat etmekten gecer yani syslog dosya-
larna. Bu dosyalar genellikle /var/log dizininde dururlar ancak isimleri kullandgnz dagtma gore baz
degisiklikler gosterebilir.

# less /var/log/messages

Feb 17 21:21:38 [kernel] Vendor: SONY Model: CD-RW CRX140E Rev: 1.0n
Feb 17 21:21:39 [kernel] eth0: generic NE2100 found at 0xe800,
Version 0x031243, DMA 3 (autodetected), IRQ 11 (autodetected).
Feb 17 21:21:39 [kernel] ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)
Feb 17 21:22:11 [kernel] NVRM: AGPGART: VIA MVP3 chipset Feb 17 21:22:11
[kernel] NVRM: AGPGART: allocated 16 pages Feb 17 22:20:05 [PAM_pwdb]
authentication failure; (uid=1000) -> root for su service
Feb 17 22:20:06 [su] pam_authenticate: Authentication failure
Feb 17 22:20:06 [su] - pts/3 chouser-root

Bu mesajlarn tamamnn anlamn kavrayacak hale gelmeniz biraz vakit alabilir ancak en onemli-
leri kendilerini zaten belli eder. Ornegin yukardaki log dosyasnn sonuna dogru chouser isimli bir
kullancnn su komutu ile root haklarna erismeye calstgn ve basarsz oldugunu goruyoruz.

18.16 Gizli giris tespiti - tripwire


Baz ozel yazlmlar mevcut dosya sisteminin bir tur fotografn cekip bunu daha sonraki dosya sis-
temi yaps ile hzlca kyaslayabilirler ve degisiklik olup olmadgna bakabilirler. Eger sistemin normal
isleyisi srasnda hangi dosyalarn ya da dizinlerin degismesinin kabul edilebilir hangilerinin kabul edilemez

41
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

oldugunu belirtirseniz bu yazlmlar sizi degisiklikler konusunda hzlca uyarrlar: baz hassas dosyalardaki
kucuk ve onemsiz gibi gorunen degisiklikler sisteme gizlice girilip dosyalara mudahale edildigine isaret
edebilir. Tripwire bu tur yazlmlardan en meshur olandr (baglant icin klavuzun sonundaki kaynaklar
ksmna bakn). Bir kere kurduktan sonra tripwire ayar dosyasn kendi sisteminize ve ihtiyaclarnza gore
ayarlamanz ve yazlm duzenli olarak calstrp (genellikle gunde bir kez) sistemi olas supheli dosya
degisimlerine kars test etmeniz gerekir.

18.17 Gizli giris tespiti - portsentry


Psionic Technologies tarafndan gelistirilmis olan PortSentry paketi gizli giris onleme ile gizli giris tespit
etme kategorilerine giren melez bir uygulamadr. Calstrldg zaman bilgisayarnzn ag trafigini gozetler
ve supheli kabul ettigi herhangi bir ag trafigi ile karslasrsa bu olayn kaydn tutar ve ayn kaynaktan
ayn tur olayn gerceklesmesini engeller. Bu yazlmla ilgili baglantlar da Kaynaklar bolumunde buluna-
bilir. Bir kez yazlm kurup calstrdgnzda PortSentrynin supheli eylemlere kars neler yaptgn syslog
dosyanzda gorebilirsiniz:
# tail /var/log/messages
Oct 15 00:21:24 mycroft portsentry[603]: attackalert: SYN/Normal scan from
host: 302.174.40.34/302.174.40.34 to TCP port: 111
Oct 15 00:21:24 mycroft portsentry[603]: attackalert: Host 302.174.40.34
"ALL: 302.174.40.34" has been blocked via wrappers with string:
Oct 15 00:21:24 mycroft portsentry[603]: attackalert: Host 302.174.40.34 has
been blocked via dropped route using command: "/sbin/route add -host
302.174.40.34 reject"
Oct 15 00:21:24 mycroft portsentry[603]: attackalert: SYN/Normal scan from
host: 302.174.40.34/302.174.40.34 to TCP port: 111
Oct 15 00:21:24 mycroft portsentry[603]: attackalert:
Host: 302.174.40.34/302.174.40.34 is already blocked Ignoring
Oct 15 00:33:59 mycroft portsentry[603]: attackalert: SYN/Normal scan from
host: 302.106.103.19/302.106.103.19 to TCP port: 111
Oct 15 00:33:59 mycroft portsentry[603]: attackalert: Host 302.106.103.19 has
been blocked via wrappers with string: "ALL: 302.106.103.19"
Oct 15 00:33:59 mycroft portsentry[603]: attackalert: Host 302.106.103.19 has
been blocked via dropped route using command: "/sbin/route add -host
302.106.103.19 reject"

18.18 Genel tavsiyeler: Yazlm Guncel Tutmak


Ne kadar test edilmis olursa olsun hemen her yazlmn surec icinde guvenlikle ilgili hatalar tespit edilebi-
lir. Bunlar tespit edildikten ksa bir sure sonra soz konusu yazlmlarn tamir edilmis halleri de yaynlanr
ve sistem yoneticisinin bunlar guncellemesi gerekir. Az once okumus oldugunuz tavsiye guvenlik uzman-
lar tarafndan en cok tekrarlanan ve amator sistem yoneticileri tarafndan da en cok gormezden gelinen
tavsiyedir. Bir musibet bin nasihate bedeldir ama bu sekilde bir seyler ogrenmek cannz yakabilir: Bil-
gisayarlarnz bir yldr bilinen ve guvenlik yamalar coktan yaynlanms (ve sizin tarafnzdan maalesef
uygulanmams) bir ack yuzunden zarar gorurse uzulursunuz.
Ack kaynakl yazlmlar m yoksa kapal kaynak kodlu yazlmlar m daha guvenlidir? tartsmas
ise uzun zamand suren cok scak bir tartsmadr. Bu konuda soylenebilecek en iyi sey belki de sudur:
duzgun olarak yonetildikleri surece ve guvenlik yamalar zamannda uygulandg surece her iki sistem de
guvenli kabul edilebilir. Pek cok web sitesi duzenli olarak tespit edilmis acklar ve bunlar gideren yamalar
yaynlar. Bunlardan en onemlileri ve guvenilir olanlar CERT ve SecurityFocus BugTraq listesidir. Ayrca
freshmeat.net gibi yazlm guncelleme haberlerini insanlara sunan siteler de yazlmlarla ilgili acklar ve
cozumleri duyururlar. Bir baska onemli kaynak da kullandgnz yazlmlarn resmi web siteleridir. Bahsi
gecen onemli sitelerin adresleri kaynaklar bolumunde verilmistir. Bu arada CERT ve Bugtraq sitelerini
ziyaret edip asina olursanz sizin icin iyi olur.

18.19 Genel tavsiyeler: yuksek kaliteli parolalar


Sradan ve skc bir tavsiye gibi gorunse de kendiniz ve kullanclarnz icin yuksek kaliteli parolalar
secmeniz, bu konuda kullanclarnz egitmeniz guvenli bir sistem kurmann en temel asamalarndan
biridir. Asla ve kata kolay tahmin edilebilen sozcukler, yaknlarnzn isimleri, telefon numaralarnz,
dogumgunu tarihiniz, evde beslediginiz hayvann ismi, sevgilinizin ad, vb.gibi kolay tahmin edilebilir

42
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

bilgileri kullanmayn. Parolanzda mumkunse ayn zamanda hem harfler hem rakamlar hem de noktalama
isaretleri bulunsun.

18.20 Genel tavsiyeler : Guvenliginizi Test Etmek


Sisteminizin guvenligini test etmek onemlidir ancak basarl gecen bir testin ardndan rahatlamak gibi bir
luksunuz yoktur. Belli bir teste gore sisteminizin guvenli gorunmesi hicbir ack barndrmadg anlamna
gelmez. Yeterli zaman, azmi ve arastrma yetenegi olan kotu niyetli bir insann sisteminize giremeyecegi
garanti edilemez.
Yukardaki bolumlerde ag guvenligi icin nmap ve netcat yazlmlarndan bahsetmistik. Bunlarn ya-
nsra zayf parolalar tespit etmek de onemlidir. Bu konularla ilgili faydal araclar klavuzun sonundaki
Kaynaklar bolumunde yer almaktadr.

19 Yazdrma Islemlerine Giris


Bu bolumde Linux uzerinde de kullanlan ve bazen Berkeley LPD olarak da adlandrlan klasik UNIX
yazdrma sisteminin kurulumundan ve kullanlmasndan bahsedecegiz. Linux uzerindeki yazdrma servis-
lerine dair baska sistemler de mevcuttur ve bunlar Kaynaklar ksmnda gorebilirsiniz. Bir yazcnn fiziksel
olarak kurulmas bu klavuzun kapsam dsndadr. Yazcy bilgisayara bir kez fiziksel olarak bagladktan
sonra bir yazc spooler dameon kurmak isteyeceksiniz ki agdaki bilgisayarlar ve yazcnn bagl oldugu
bilgisayar yazcya yazdrlabilecek belgeleri gonderebilsinler.

19.1 Bir yazc spooler daemon kurulumu (lpd)


En iyi LPD yazc spooler yazlmlarndan biri LPRngdir. Kurulum yontemi dagtmnza gore biraz
degisiklik gosterebilir. Red Hat ya da Debian yazlm paketlerinin kurulumu icin LPI 102 1. bolume
bakabilirsiniz. Bir kez kurulduktan sonra yazc spooler daemon (resmi ismi ile Line Printer Daemon)
komut satrndan calstrlabilir. Normal bir kullanc olarak sisteme girin ve sunu deneyin:

$ /usr/sbin/lpd -help
--X option form illegal
usage: lpd [-FV] [-D dbg] [-L log]
Options
-D dbg - set debug level and flags
Example: -D10,remote=5
set debug level to 10, remote flag = 5
-F - run in foreground, log to STDERR
Example: -D10,remote=5
-L logfile - append log information to logfile
-V - show version info

Daemon kurulduguna gore simdi her seferinde otomatik olarak baslatlacagndan emin olmalsnz.
Dagtmnzn LPRng paketi bunun sizin icin coktan ayarlams olabilir ancak eger yapmad ise LPI 101
4. bolum size runlevellar ve lpd gibi daemon yazlmlarnn otomatik olarak baslatlmas konusunda size
bilgi verecektir.

19.2 Temel yazc ayarlar (/etc/printcap)


Yazdrma spooler daemon bir tur boruhatt gibi calsr. Pek cok farkl noktadan kendisine gelen yazdrma
islerini kabul eder ve bunlar uygun yazclara yonlendirir. Yazc mesgul iken bu isler spoola yani
kuyruga girerler ve yazdrlmak icin sralarn beklerler. Makinaya dogrudan bagl bir yazcya yazdrrken
bu boru hattnn her iki ucu da /etc/printcap (ya da /etc/lprng/printcap) dosyasndaki ayarlarla belirle-
nir. printcap dosyasndaki her girdi (bu dosyann ismi printer capabilities sozcuklerinin ksaltmasndan
gelir) bir yazdrma kuyrugunu gosterir:

$ more /etc/printcap
lp|Generic dot-matrix printer entry:\
:lp=/dev/lp0:\
:sd=/var/spool/lpd/lp:\
:pl#66:\

43
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

:pw#80:\
:pc#150:\
:mx#0:\
:sh:

Son girdinin en sonunda bir tersbolu (


) bulunmadgna dikkat edin. Sizin sisteminizde baska girdiler de olabilir ve bunlar daha karmask olabilir
ancak genel olarak bu dosyann format yukarda gordugunuz gibidir. Once girdinin ismi gelir, lp ardndan
da bu kuyrugun detayl bir tanmlamas. lp=/dev/lp0 seklindeki anahtar sozcuk, deger ikilisi bu kuyruk-
taki yazdrma islerinin hangi cihaza yonlendirilecegini gosterirken sd anahtar sozcugu de yazdrlacak
islerin hangi dizinde barndrlacagn belirtir. Anahtar sozcuk, deger ciftlerinin geriye kalanlar /dev/lp0
dosyasna fiziksel olarak nasl bir yazc bagl oldugunu belirtir.

19.3 Spool dizinlerinin yaratlmas


Eger bir girdi yaratrsanz buna paralel olarak ilgili spool dizinin dogru izinler verilmis halde mevcut
oldugundan emin olmanz gerekir. Genellikle lp kullancs olarak calsan yazc daemonnn bu spool
dizinine erismesini isteyeceksiniz. root kullancs olarak su komutlar vermeniz gerekir:
# mkdir -p /var/spool/lpd/lp
# chown lp /var/spool/lpd/lp
# chmod 700 /var/spool/lpd/lp
# checkpc -f
# /etc/init.d/lprng restart

LPRng printcapi kontrol edebilmeniz icin faydal bir arac icerir. Ayn zamanda, eger siz unutursanz
spool dizinini de ayarlar:
# checkpc -f

Son olarak lpdyi tekrar baslatn. Ne zaman printcapi degistirseniz degisikliklerin gecerli olmas icin
bunu yapmanz gerekir. lpd yerine lprng kullanmanz gerekebilir:
# /etc/init.d/lprng restart

Eski Berkeley yazdrma sistemi checkpc aracn icermez bu yuzden birden fazla yazcnz var ise bunlara
bastrlacak belgeler yollayarak printcap ve spool dizinlerinin dogru olup olmadgn kontrol etmeniz
gerekir.

19.4 Yazdrma spooler istemcilerini kullanmak


Yazdrma spooler istemcisi sunucu daemon ile iletisim kurabilecek pek cok istemci ile birlikte gelir. En
cok kullanlan lpr programdr ve yaptg sey bir yazdrma kuyruguna ilgili belgeyi yollayp yazdrlmasn
saglamaktr. Bunu denemek icin once kucuk bir metin dosyas olusturun ve sonra da:
$ lpr sample.txt

Eger calst ise ekranda herhangi bir mesaj gormezsiniz fakat yazcnz calsmaya baslar ve dos-
yanzn kagda basldgn gorebilirsiniz. Eger cok duzgun gorunmuyorsa uzulmeyin biraz sonra gerekli
filtreleri nasl kuracagmz ve her turlu format nasl yazcya gonderebilecegimizi inceleyecegiz. Yazc
kuyrugundaki yazdrma islerinin listesini lpq komutu ile ile ogrenebilirsiniz. -P secenegi hangi kuyrugun
gosterilecegini belirler eger bunu es gecerseniz ontanml kuyruk listelenecektir:
$ lpq -Plp
Printer: lp@localhost Generic dot-matrix printer entry
Queue: 1 printable job
Server: pid 1671 active
Unspooler: pid 1672 active
Rank Owner/ID Class Job Files Size Time
active chouser@localhost+670 A 670 sample.txt 8 21:57:30

Eger bir yazdrma isini iptal etmek istiyorsanz lprm komutunu kullanmalsnz. Bu komut bir yazdrma
isi cok uzun suruyorsa ya da bir kullanc yanlslkla ayn belgeyi bir kereden daha cok gondermisse ise
yarar. Tek yapmanz gereken yukardaki listeden job idsini tespit etmek:

44
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

$ lprm chouser@localhost+670
Printer lp@localhost:
checking perms chouser@localhost+670
dequeued chouser@localhost+670

lpc ile yazc kuyrugunda pek cok sey yapabilirsiniz. Detaylar icin lpc man sayfasna baknz.

19.5 Uzaktaki bir LPD sunucusuna yazdrmak


Dogrudan kendi bilgisayarnza bir yazc bagl olmasa bile yine de lpdyi kullanarak ag uzerindeki bir
bilgisayara bagl bulunan yazcya belgelerinizi gonderebilirsiniz. Istemci makinada /etc/printcap dos-
yasna yerel bir yazc gibi gorunen ama aslnda yazdrma islerini uzaktaki makinaya yonlendiren bir girdi
olusturabilirsiniz:

farawaylp|Remote printer entry:\


:rm=faraway:\
:rp=lp:\
:sd=/var/spool/lpd/farawaylp:\
:mx#0:\
:sh:

Burada ag uzerinde bulunan ve kendisine bir yazc bagl olan makinann ismi farawaydir ve bu
makinadaki yazcnn ismi de lpdir. spool dizini /var/spool/lpd/farawaylpdir ve uzaktaki makinann
spool dizinine gonderilmek uzere srada bekleyen yazdrma isleri bu dizinde barndrlacaklardr. Tabii bu
spool dizinini uygun izinleri de vererek yaratmanz gerektigini unutmayn:

# mkdir -p /var/spool/lpd/farawaylp
# chown lp /var/spool/lpd/farawaylp
# chmod 700 /var/spool/lpd/farawaylp
# checkpc -f
# /etc/init.d/lprng restart

Yerel olarak uzaktaki yazcya farawaylp ismini verdigimize gore ona yonlendirilmis isleri de su sekilde
goruntuleyebiliriz:

$ lpr -Pfarawaylp sample.txt

19.6 Uzaktaki bir MS Windows ya da Samba sunucusuna yazdrmak


Samba sayesinde uzaktaki bir Microsoft Windows yazc sunucusuna belge yollamak zor bir is olmaktan
ckmstr. Once yerel printcap girdimizi olusturalm:

smb|Remote windows printer:\


:if=/usr/bin/smbprint:\
:lp=/dev/null:\
:sd=/var/spool/lpd/smb:\
:mx#0:

Buradaki yeni anahtar ifdir yani girdi filtresi (input filter). Bunu smbprint betigine yonlendirmek
yazma isinin lp cihaz yerine uzaktaki bir Windows sunucusuna yonlenmesine yol acacaktr. Bu durumda
yine de yazdrma daemonn kilit islemleri icin kullanacag bir cihaz listelemeliyiz: /dev/null. Ancak tabii
ki hicbir yazdrma isi bu cihaza gonderilmeyecektir. Spool dizinini yaratmay unutmayn!

# mkdir -p /var/spool/lpd/smb
# chown lp /var/spool/lpd/smb
# chmod 700 /var/spool/lpd/smb
# checkpc -f
# /etc/init.d/lprng restart

Favori metin editorunuz ile ismi yukardaki gibi belirlenmis spool dizininde bir .config dosyas olustu-
run (ornegimizde: /var/spool/lpd/smb/.config):

45
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

server="WindowsServerName"
service="PrinterName"
password= " "
user=" "

Bu degerleri Windows calstran bilgisayar ve oradaki yazcy gosterecek sekilde ayarlayn, ve islem
tamam:

$ lpr -Psmb sample.txt

smbprint betigi genellikle Samba ile birlikte gelir ancak her dagtmda bulunmayabilir.Eger bunu
sisteminizde bulamazsanz Samba HOWTO belgesinde bulabilirsiniz.

19.7 Magicfilter
Simdiye dek sadece metin dosyalar ile ilgilendik ve bu da cok heyecan verisi saylmaz. Genellikle eli-
nizin altndaki herhangi bir yazc tek bir grafik formatn basabilecek kapasitededir ancak baslmasn
arzuladgmz pek cok farkl format mevcuttur: PostScript, gif, jpeg ve digerleri. Magicfilter isimli prog-
ram bir tur girdi filtresi olarak calsr tpk smbprintin yaptg gibi. Dosya formatlarn donusturmez
sadece baslacak belgenin tipinin belirlenmesini saglayacak bir altyap sunar ve sonra gerekli donusturme
yazlmnn calstrlmasn saglar. Donusturme yazlmlar ayrca kurulmaldr. Bunlardan en onemlisi ise
Ghostscript yazlmdr; bu yazlm Postscript formatndaki dosyalar yazcnn yerel formatna donusture-
bilir.

19.8 printcapi Magicfilteri gosterecek sekilde ayarlamak


Bu araclar kurulduktan sonra yaplmas gereken printcap dosyasn bir kez daha ayarlamaktr. if anahtar
Magicfilteri gosterecek sekilde yazcnz ayarlayabilirsiniz:

lp|The EPSON Stylus Color 777 sitting under my desk:\


:if=/usr/share/magicfilter/StylusColor-777@720dpi-filter:\
:gqfilter:\
:lp=/dev/usb/lp0:\
:sd=/var/spool/lpd/lp:\
:pl#66:\
:pw#80:\
:pc#150:\
:mx#0:\
:sh:

/usr/share/magicfilter icinde duzinelerce farkl yazc icin ayarlar mevcuttur, yazcnz icin dogru olan
sectiginizden emin olun. Bunlardan her biri bir metin dosyasdr ve yazcnn tam ismi en tepededir, bu
sekilde hangi dosyaya ihtiyacnz oldugunu tespit edebilirsiniz. Ayrca eklenmis olan bir gqfilter secenegi
de uzaktaki bir istemciden gelen belgelerin yine filtreye yonlendirilmesini saglar. Bu sadece LPRng ile
calsr. Daha once /var/spool/lpd/lp yazc spool dizini daha once ayarlanms oldugu icin tek yaplmas
gereken printcap sozdizimini kontrol etmek ve sunucuyu yeniden baslatmak:

# checkpc -f
# /etc/init.d/lprng restart

Artk Postscript dosyalar da dahil olmak uzere cok cesitli belgeleri yazdrabilirsiniz. Baska bir deyisle
favori web taraycnzn menusundeki Print secenegi artk duzgun sekilde calsyor olmal.

19.9 Magicfilter alternatifi olarak Apsfilter


Apsfilter, Magicfilterin sundugu ozelliklerin cogunu sunar fakat ayn zamanda spool dizinler, printcap
girdileri gibi seyleri de kendisi ayarlar.
Ghostscriptin yine de kurulu olmas gereklidir, ardndan Apsfilter elkitabndaki detayl acklamalar
okuyarak gerekli ayarlamalar yapabilirsiniz.

46
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

19.10 Kaynaklar
xinetd anasayfasndan ayarlamalarla ilgil detayl bilgi edinebilirsiniz. Kendi servis isimleriniz ve port
numaralarnz /etc/services dosyasna eklerken onceden atamas yaplms olan portlar ve servislerle
caksmamalarna dikkat edin. netfilter anasayfas iptables ile ilgili detayl bilgi edinmek icin birincil kay-
naktr. Kendi kural setinizi kendi sisteminize gore hassas olarak kurabilecek kadar deneyim sahibi olana
dek gShield gibi hazr bir iptables betigini denemenizi tavsiye olunur.
Ilk akla gelen guvenlik araclar arasnda sunlar saylabilir: Tripwire en populer gizli giris tespit
araclarndandr.
Psionic Technologiesden gelen PortSentry ise hem tespit etme hem de onlemeye yoneliktir. (Linu-
xWorlddeki How to stop crackers with PortSentry baslkl makale bu yazlmla ilgili detayl bilgi verir)
Bunlara ek olarak Wietse Venemann TCP Wrappers yazlmna asina olmanz menfaatiniz icabdr,
bu yazlm sisteminizdeki baglantlar gozetlemenizi ve kontrol etmenizi saglar.
Agnz dibine dek ack m? Bu tip analizler icin su iki temel yazlmdan faydalanabilirsiniz: netcat
basit bir UNIX programdr ve her turlu ag baglantsn istediginiz TCP ya da UDP protokolu uzerinden
kurmanz saglar.
nmap ise ag kesfetmek ve guvenlik denetimi yapmak icin kullanlan bir aractr. nmap ack olan portlar
tarar.
Parola test etme yazlmlar sisteminizdeki parolalarn kalitesi konusunda size bilgi verir. Bu amacla
gelistirilmis en meshur yazlmlardan biri John the Ripperdr. Daha detayl bir test edici olarak SAINT
yazlmna goz atabilirsiniz.

19.11 Her sistem yoneticisinin duzenli olarak takip etmesi gereken en onemli
siteler:
CERT devlet tarafndan finanse edilen ve Carnegie Mellon University tarafndan isletilen bir merkezdir.
Ilgi odag Internet guvenlik problemleridir. SecurityFocus tarafndan barndrlan BugTraq da guvenlikle
ilgili problemlerin duzenli olarak duyuruldugu en onemli listelerden biridir. Ozel olarak guvenlik yonetimi
ile ilgilenmiyorsanz bile bulisteye uye olmanz menfaatiniz icabdr. Yaplan duyurular arasnda sizin
sisteminiz ile baglantl olanlar ilginizi cekebilir.
Linux guvenligi ile ilgili tavsiye edebilecek diger sitelere gelince: Linux Security HOWTO, OReillys
Security Pageve tabii ki developerWorksdan Security Zone.
Yazdrma konusu ile ilgili olarak LPRng anasayfas pekcok bilgi icerir. Tabii Printing HOWTO da
degerli bir belgedir. Bu konu ile ilgili bir baska onemli kaynak da LinuxPrinting.org sitesidir. Spesifik
yazclarla ilgili olarak Serial HOWTO belgesine dansabilirsiniz. USB klavuzu da USB yazclarla ilgili
bilgi verir.
Heterojen aglarda Samba buyuk bir yardmcdr. Bu tur bir ortamda yazc servisleri ile ugrasacaksanz
Samba ana sayfasn ve Samba HOWTO belgesini de okumakta fayda vardr. Burada iki filtreleme prog-
ram ele alnmstr:
Magicfilter ve Apsfilter. Unutmayn ki bu programlarn bir donusturucuye ihtiyac vardr (tercihen
Ghostscript).

19.12 Etkilesimli, guvenli kabuk oturumu


Eskiden, ag uzerinden etkilesimli bir oturum acmak istediginizde telnet veya rsh kullanrdnz. Ancak ag
islemlerinin popularite kazanmasyla bu araclarn eskisi kadar uygun olmadg ortaya ckt. Cunku tel-
net ve rsh kesinlikle guvensizdi. Sunucu ve istemci arasndaki bilgileri sifrelenmeden gonderiliyordu ve
boylece aga girebilen herhangi birisi tarafndan kolaylkla okunabiliyordu. Sadece bu kadarla kalmyor,
kimlik dogrulama islemi icin sunucuya yollana parola duz metin halinde gonderiliyordu, bu da ag uze-
rinde data yakalayabilen herkes icin sizin hesabnza girmenin cok kolay oldugu anlamna geliyordu.
Ayrca bir ag yoklaycs ile, tum telnet oturumunuz tekrar olusturulabilmesi ve sizin ekranda gordugunuz
herseyin goruntulenebilmesi mumkundu. Sonuc olarak, aglarn guvenli ve yoklanamaz olacag varsaymyla
olusturulmus olan bu araclarn, bugunku cok daglms ve halka ack aglar uzerinde kullanlmas cok uygun
olmadg ack.

19.13 Guvenli kabuk


Daha iyi ve guvenli bir cozume ihtiyac dogmustu. Bu cozum guvenli kabuk (secure shell), bir diger adyla
ssh oldu. Gunumuzde cok populer olan bu arac tum Linux dagtmlarnda openssh paketi olarak bulunu-

47
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

yor. Sshn, guvenli olmayan diger araclardan fark, istemci ile sunucu arasndaki tum iletisimi guclu bir
sifreleme mekanizmasyla sifrelemesidir. Boylece istemci ve sunucu arasndaki iletisimi goruntulemek cok
zor (hatta imkansz) hale geliyor. Bu da, guvenli kabuk ismini haketmis olmasn saglyor. Ssh cok ozel-
likli bir guvenlik yapsna sahiptir, bir sekilde aga girilse ve sunucu-istemci iletisimi goruntulense bile
parola dogrulama icin sifrelemenin yannda baz anahtar degisimi stratejileriyle, parolann calnmasn
imkansz klar. Internetin bu kadar populer oldugu gunumuzde, Linux sistemlerin kullanldg aglarda,
guvenligi ustu duzeye ckarmak icin ssh uygun bir aractr. Guvenligin onemini kavrams sistem yoneti-
cileri, aglarnda telnet ve rsh kullanlmasn uygun bulmaz, hatta bazen yasaklarlar. Cunku ssh ayn isi
yapabilen ve cok daha guvenli bir alternatiftir.

19.14 ssh kullanm


Cogunlukla, tum dagtmlardaki openssh paketleri herhangi bir ayarlamaya ihtiyac duyulmakszn kul-
lanlabilirler. openssh kurulunca birkac ikilik dosyanz olacak. Bir tanesi sshd calstran bir guvenli kabuk
sunucusuna baglanmanz saglayacak olan guvenli kabuk istemcisi: ssh. Ssh kullanmak ve bir oturum
acmak icin:

$ ssh knoppix@remotebox

yazarsnz. Burada remotebox makinesine knoppix kullancsyla baglanma komutu vermis olduk. Tel-
netteki gibi bir parola sorulacak, parolay girdikten sonrada uzaktaki makinede sizin icin yeni bir oturum
aclms olacak.

19.15 sshd baslatmak


Eger makinenize ssh ile ulaslmasna izin vermek isterseniz sshd sunucusunu calstrmanz gerekir. Bunun
icin openssh paketiyle gelen rc-scripti kullanmalsnz. Soyle ki:

# /etc/init.d/sshd start

veya

# /etc/rc.d/init.d/sshd start

Eger gerekirse, sshd yaplansnz /etc/ssh/sshd config dosyas uzerinden degistirebilirsiniz. Daha fazla
bilgi almak ve diger tercihleri gormek icin sshd klavuz sayfasn kullanabilirsiniz:

man sshd

19.16 Guvenli kopya


Openssh paketi ayrca cok kullansl bir arac daha icerir. Guvenli kopya (secure copy), scp, olarak ad-
landrlan bu aracla agnz uzerinde kendi makinenizden baska makineye veya ters yonde guvenli kop-
yalama islemleri yapabilirsiniz. Ornegin, /foo.txt dosyasn remotebox makinesindeki home dizinime
kopyalamak istersem:

$ scp ~/foo.txt knoppix@remotebox:

Parola girme ve dogrulama isleminden sora kopyalama yaplacaktr. Tersi icinde, ornegin remotebox
makinesinin /tmp dizinindeki bar.txt dosyasn, yerel makinemde, halihazrda calstgm dizine kopyala-
mak istersem:

$ scp knoppix@remotebox:/tmp/bar.txt

yazarm.

19.17 Guvenli kabuk dogrulama ve yetkilendirme tercihleri


Opensshn farkl dogrulama yontemleri vardr. Dogru kullanlmak sartyla, uzak sistemlere parola gir-
meksizin de ulasabilirsiniz. Bu ayarlar yukarda bahsettigimiz /etc/ssh/sshd config dosyas uzerinden
yaplabilir.

48
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

20 NFS
20.1 NFSe giris
Ag Dosya Sistemi (The Network File System - NFS), yerel bir agda, birbirine bagl UNIX ve Linux
sistemlerin, aralarnda dosya paylasmn saglayan bir teknolojidir. NFS, Linux ve UNIX dunyasnda
uzun suredir bilinen ve yaygn olarak kullanlan bir sistemdir. NFSin temel kullanm, kullanclarn, ag
uzerinde herhangi bir makinede oturum actklarnda kendi home dizinlerine ulasmalarn saglamaktr.
NFS sayesinde uzak makinelerin dosya sistemi ve agac yaplarnn, yerel olarak oturum aclan makineye
baglanmas (mount) ve tam uyumlulugu saglanabiliyor. Bu yeterlilik ve basitlik, NFSi, Linux dunyasnda
en populer ve kullansl ag dosya paylasm sistemi haline getirmistir.

20.2 Temel NFS bilgileri


NFS uzerinden dosya paylasm icin once bir NFS sunucu kurulmas gerekir. Bu sunucu dosya sistemle-
rini ihrac etme ozelligine sahip olacak. Bir dosya sisteminin ihrac edilmesi, ag uzerindeki diger sistemler
tarafndan kullanlabilir hale gelmesi anlamndadr. Boylece, NFS istemci olarak kurulmus bir sistem-
den, bu ihrac edilen dosya sistemini standart mount komutuyla baglayabilirsiniz. Baglama islemi ta-
mamlannca, uzaktaki sistem, yerel makineye baglanms herhangi bir sistem gibi (ornegin /mnt/cdrom)
kullanlabilecektir. Bu yapda, yerel sisteme baglanan dosya sisteminin bir diskten degil, sunucudan
alndgna dikkat edin. Bu durum Linux sistemlerinin zaten uyumlu oldugu bir uygulamadr, bu yuzden
cogu zaman sorunsuz calsr.

20.3 NFSin ozellikleri


NFS dosya paylasm sisteminin baz ilginc ozellikleri vardr. Bu ozelliklerden ilki NFSin basna buyruk
tasarmdr. Istemcilerin sunucuya baglantlar, kendi basna oldugundan, NFS sunucusundaki herhangi
bir nedenle kapanp-aclma durumu, istemcilerin baglantsnda bir kopmaya sebep olmaz. Sadece gecici
olarak duraklatlan uzak NFS dosya baglantlar, sunucu tekrar eski haline geldiginde, kaldg yerden
devam edecektir. Yine bu basna buyruk ozellik sayesinde, bir sunucu, cok sayda istemciyi, ek bir yuk
olmakszn, rahatlkla kaldrabilir. Fazla istemci olmasnn getirecegi tek yuk, ag uzerinde dosya trans-
ferleri srasnda ortaya ckan yogunluk olacaktr. Ozetle sunu soyleyebiliriz ki, NFSin performans, ag
uzerindeki istemci saysna degil, veri transferi yogunluguna bagldr.

20.4 Linuxta NFS, surum 3


NFS kurulacag zaman surum 2 yerine surum 3u tercih etmenizi oneririz. Surum 2nin, dosya kilitleme
ve baz sureclerde taklma konusunda olumsuz bir sohreti vard. Ama bu sorunlar surum 3te cozuldu. Bu
surum saglam ve basarl kabul ediliyor. Linux 2.2.18 ve uzeri cekirdekler NFS 3 sunucu ve istemcilerini
destekliyorlar. Dolaysyla NFS 3 varken, artk NFS 2 kullanmak icin herhangi bir sebep yok.

20.5 NFSte guvenlik


NFS surum 2 ve surum 3 te guvenlik nedeniyle baz kstlamalar oldugunu belirtelim. NFS, ozel olarak,
guvenli bir ag uzerinde calsmak uzere tasarlanms bir sistemdir. Yerel agnzda guvenli olarak NFS
kullanmak istiyorsanz, sunucu makinesinin root parolasnn sadece ve sadece sistem yoneticilerinde olmas
gerekir. Eger sradan bir kullanc, root parolasna sahipse, NFS guvenlik duvarn kolayca asabilir ve
sunucu uzerinde, normalde ulasamayacag dosyalara ulasarak sistem guvenligini tehdit edebilir. Bu yuzden
NFS sistemi plansz, gelisi guzel kurulmamaldr. Yerel agnzda NFS kullanmaya karar vermeniz cok iyi
ama once sunucunuz icin bir kalkan (firewall) kurmalsnz. Ayrca yerel agnz dsndan NFS sunucunuza
ulasmn mumkun olmadgndan emin olun. Sonrasnda da, yerel agnzn guvenli oldugundan emin olup,
bu guvenlik kontrollerini sk sk yapmal ve yeri geldikce gelistirmelisiniz. Artk guvenli olarak NFS
kullanmaya hazrsnz.

21 NFS kurulumu
NFS 3 kurulumunun ilk adm bir NFS sunucusu kurmaktr. Sunucu olarak secilen makinenin cekirdeginde
NFS sunucu destegini aktif hale getirmek gerekir. NFS 3 icin 2.2.18 ve uzeri bir cekirdege (2.4 ve uzeri
onerilir) sahip olmalsnz. Eger cekirdeginizi kendiniz derliyorsanz, /usr/src/linux dizinine gidip

49
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

# make menuconfig

komutunu calstrmalsnz. Burada File systems section secenegini, ardndan da Network File
Systems secenegini sectikten sonra, asagdaki tercihleri aktif hale getirin:

<*> NFS file system support


[*] Provide NFSv3 client support
<*> NFS server support
[*] Provide NFSv3 server support

21.1 /etc/exports uzerindeki duzenlemeler


Cekirdeginizi derleyip kurduktan sonra, bilgisayarnz yeniden baslattgnzda sisteminiz NFS 3 sunucu
ve istemci ozelliklerine sahip olacaktr. Cekirdekte NFS destegini sagladktan sonra, sra /etc/exports
dosyasn duzenlemeye geldi. /etc/exports dosyas uzerindeki duzenlemeler, hangi dosya sistemlerinin
ihrac edilebilecegini, bu dosya sistemlerine kimlerin ulasabilecegini ve bu kullanclarn okuma/yazma veya
sadece okuma haklaryla ulasabileceklerini belirler. Ayrca NFSin calsmasyla ilgili baz diger ayarlar
da buradan kontrol edebiliriz.
/etc/exports dosyasn incelemeden once, varolan bir problemden bahsedelim. Linux cekirdegindeki
NFS sistemleri, her bir dosya sisteminde tek bir dizinin ihrac edilmesine izin verir. Yani ayn ext3
dosya sisteminde (ornegin /dev/hda6 da) bulunan /usr ve /home dizinlerini birlikte ihrac edilmeleri icin
/etc/exports dosyasna yazamazsnz. Eger her iki klasoru de /etc/exports dosyasna eklerseniz, bu dosya
tekrar okundugunda (ornegin NFS sunucu calsrken exportfs -ra yazarsanz) asagdaki hatay gorursunuz:

sidekick:/home: Invalid argument (Gecersiz degisken)

21.2 Ihrac kstlamalar ile calsma


Simdi bu problemi nasl cozecegimize, yani hem /usr hemde /home klasorlerini ayn anda nasl ihrac
edecegimize bakalm. Her iki dizinde ayn dosya sistemindeyse birlikte ihrac edemeyecegimizi soyledik. O
zaman / (kok) dizinini ihrac ederiz. Boylece NFS istemcileriniz artk hem /home hemde /usr dizinlerini
NFS uzerinden baglayabilirler. Ayrca NFS sunucusundaki /etc/exports dosyas da her bir dosya sistemi
icin tek bir dizin ihrac edildigi icin hata vermez. Linux NFSin bu kurulumunu da gordukten sonra
/etc/exports dosyasna bakabiliriz.

/etc/exports dosyas

/etc/exports dosyasnn yapsn anlamann en iyi yolu bir ornegini incelemektir. Bizim NFS sunucu-
sundaki /etc/exports dosyasnn icerigi soyle:

# /etc/exports: NFS file systems being exported.


/ 192.168.1.9(rw,no_root_squash)
/mnt/backup 192.168.1.9(rw,no_root_squash)
See exports(5).

Goruldugu gibi dosyann ilk satr bir acklama. Ikinci satrda kok (/) dizinin ihrac edildigi be-
lirtiliyor. Sunu unutmayn ki, kok dizin ihrac edildikten sonra ayn dosya sisteminde ki bir baska dizin
ihrac edilemez. Ornegin NFS sunucumun /mnt/cdrom klasorune baglanms bir CD surucu varsa, bu
surucu /etc/exportsta ayrca baglanmadg surece ulaslamazdr. Bunun icin dosyann ucuncu satrna
bakalm. Burada kok dizinden baska bir dosya sistemine ait olan ve sistemin yedeginin tutuldugu /mnt/-
backup dizini ihrac ediliyor. Her satrdaki 192.168.1.9(rw,no root squash) bilgisi de, nfsdye, sadece
192.168.1.9 IP adresli istemcilerin, ihrac edilen dizinlere ulasabilecegini ve bu istemcilerin okuyabildikleri
gibi yazma haklarna da sahip olacaklarn soyler. Ayrca bir NFS istemcisinde super kullanc hesabyla
dosya sistemine root haklaryla ulasmasna izin veriliyor.

21.3 Bir baska /etc/exports ornegi


Buradaki /etc/exports dosyas da bir onceki ornekteki dosya sistemini ihrac etmek icin olusturulmus.
Ancak bir fark, buradaki sunucu, LAN uzerindeki (192.168.1.1 den 192.168.1.254 e kadar) tum makinelere
hizmet veriyor.

50
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

# /etc/exports: NFS file systems being exported.


/ 192.168.1.1/24(rw,no_root_squash)
/mnt/backup 192.168.1.1/24(rw,no_root_squash)
See exports(5).

Bu /etc/exports orneginde, /24 maskesi kullanlarak, verilen IP adresindeki son 8 bit maskeleniyor.
Burada IP adresi ifadesiyle ( arasnda bosluk olmamasna dikkat edin. Bu araya koyacagnz bir bosluk
karakteri dosyann yanls yorumlanmasna sebep olur. rw ve no root squash dsnda da baz izin
tercihleri vardr. Bunun icin man exports yazarak tum tercihleri gorebilirsiniz.

21.4 NFS3 sunucusunu calstrmak


/etc/exports dosyas duzenlendikten sonra, NFS sunucunuzu calstrmaya hazrsnz demektir. Cogu
dagtmda nfs calstrma komut dosyalar hazr geliyor. Yazmanz gereken:
/etc/init.d/nfs start

veya
/etc/rc.d/init.d/nfs start

NFS calstrldktan sonra, rpcinfo yazdgnzda asagdakine benzer bir ckt almanz gerekiyor.
# rpcinfo -p
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 32768 status
100024 1 tcp 32768 status
391002 2 tcp 32769 sgi_fam
100011 1 udp 792 rquotad
100011 2 udp 792 rquotad
100011 1 tcp 795 rquotad
100011 2 tcp 795 rquotad
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100021 1 udp 32770 nlockmgr
100021 3 udp 32770 nlockmgr
100021 4 udp 32770 nlockmgr
100005 1 udp 32771 mountd
100005 1 tcp 32770 mountd
100005 2 udp 32771 mountd
100005 2 tcp 32770 mountd
100005 3 udp 32771 mountd
100005 3 tcp 32770 mountd
100009 1 udp 821 yppasswdd
100004 2 udp 734 ypserv
100004 1 udp 734 ypserv
100004 2 tcp 737 ypserv
100004 1 tcp 737 ypserv

21.5 Ihrac tercihlerini degistirme


Eger NFS servisi calsrken baz degisiklikler yaparsanz, bu degisikliklerin aktif olmas icin
exportfs -ra

yazmanz gerekir. Boylece NFS sunucunuz yeniden duzenlenmis ve calsr hale gelmistir. Artk NFS
istemcilerini yaplandrarak, ihrac ettiginiz dosya sistemlerini baglamalarn saglayabiliriz.

21.6 NFS istemcilerini yaplandrma


NFS 3 istemcileri icin cekirdek yaplandrlmas NFS sunucu ile cok benzer. Tek fark, sadece asagdaki
tercihlerin secilmis olmas yeterlidir.
<*> NFS file system support [*] Provide NFSv3 client support

51
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

21.7 NFS istemci servislerinin calstrlmas


NFS istemci servislerini baslatmak icin, sunucudaki gibi baz hazr komut dosyalarn, nfslock veya
nfsmount, calstrmak yeterlidir. Bu komutlar NFS istemcinin tek ihtiyac olan rpc.statd servisini
baslatacak. Bu servis, dosya kilitleme sisteminin dogru calsmasn saglar. Tum istemci servisleri ku-
rulduktan sonra, rpcinfo yazarsanz, asagdakine benzer bir ckt alrsnz:

# rpcinfo
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 32768 status
100024 1 tcp 32768 status

Bu kontrolu uzaktaki bir sistemden yapmak isterseniz, komutu rpcinfo -p makine adi parametreleriyle
calstrmak gerekir:

# rpcinfo -p sidekick
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 32768 status
100024 1 tcp 32768 status

21.8 Ihrac edilen NFS dosya sistemlerini baglama


Sunucu ve istemciler kurulduktan sonra ve NFS sunucusu, istemcinizden gelen baglantlara izin ver-
mek uzere yaplandrldysa, bir sonraki asamaya, ihrac edilen bir dosya sistemini istemci makineye
baglama islemine gecebilirsiniz. Asagdaki ornekte, inventor makinesi NFS sunucusu, sidekick ise (IP
adresi 192.168.1.9) NFS istemcisi olarak kurulmus. Inverntorn /etc/exports dosyasnda asagdaki satr
yer alyor.

/ 192.168.1.1/24(rw,no_root_squash)

Boylece, 192.168.1 agndaki tum makinelere baglant izni verilmis. Simdi sidekick makinesine root
olarak girin ve asagdakileri yazn:

# mount inventor:/ /mnt/nfs

Inverntor makinesinin kok dizini, sidekick makinesinde /mnt/nfs dizinine baglanms oldu.

cd /mnt/nfs

yazarak, inventor makinesinin dizinlerinde gezebilir ve dosyalarna bakabilirsiniz. Sunu tekrar hatrla-
talm ki, inventor makinesinin kok (/) dizini baska bir dosya sisteminde olsayd, /mnt/nfs/home dizini
hicbirsey icermeyecekti. Bu durumda, buradaki bilgiye ulasmak icin yeni bir baglama islemine (ayn
zamanda inventor makinesinin /etc/exports dosyasnda yeni bir satra) ihtiyac duyacaktk.

21.9 Ihrac edilen dizinlerin icinde yaplan baglama islemleri


/etc/exports dosyasndaki / 192.168.1.1/24(rw,no root squash) satrnn kok dizini icindeki dizinlere de
baglama islemi uygulamamza izin verdigini unutmayalm.
Ornegin, inventor makinesinde kok (/) dizin ile /usr dizinleri ayn dosya sistemindeyse ve siz /
yerine /usr dizinini baglamak isterseniz, o zaman:

# mount inventor:/usr /mnt/usr

yazarsnz. Boylece inventorun /usr dizin agac, sizin onceden varolan /mnt/usr dizininize baglanms
oldu. Bunun icin /etc/exports dosyasnda bir degisiklige ihtiyac olmadgna dikkat edin. Kok dizininin
ihrac edilmesi, onun altndaki dizinlere baglama islemi yaplmasn ozgur brakmst.

52

You might also like