SBC üzerine kuracağınız FTP sunucu için dikkat etmeniz gereken bazı noktalar vardır. Bir kere amacımız
sadece basit anlamda dosya aktarımını gerçekleştirebilmektir. Karmaşık özelliklere sahip çok büyük
bir FTP sunucu değil, olabildiği kadar küçük, sağlam ve güvenilir bir uygulama bizim için yeterlidir.
Bir diğer önemli özellik, FTP sunucunun PAM desteği olmadan doğrudan sistemdeki passwd
ve shadow dosyaları ile çalışabilmesi gerekliliğidir. Aksi takdirde FTP
sunucuyu çalıştırmak için SBC üzerindeki sistemimize PAM desteği vermek zorunda kalabiliriz
ki bu da "Türkler için ayda nasıl yürünür?" konulu bir eğitim kadar gereksizdir.
Yukarıda bahsettiğim koşullar ve yıllardan beri kendini kanıtlamış sağlam yapısı nedeniyle ben
bsd-ftpd sunucusunu kullanmaya karar verdim.
bsd-ftpd,
OpenBSD FTP sunucusunun Linux işletim sistemine taşınmış halidir. Programı
http://www.eleves.ens.fr:8080/home/madore/programs/ adresinden indirebilirsiniz. Arşivi
indirip açtıktan sonra içerisinden çıkan
Makefile dosyasını bir metin düzenleyicide
açarak dosyanın başındaki ilgili yerleri aşağıdaki hale getiriniz:
#CFLAGS = $(OPT_CFLAGS) $(EXTRA_CFLAGS) -DTCPWRAPPERS -DUSE_PAM -DAUTO_UNCOMPRESS -DINTERNAL_LS
#LIBS = $(EXTRA_LIBS) -lutil -lwrap -lnsl -lcrypt -lpam -ldl
## If you prefer shadow password support, try this:
CFLAGS = $(OPT_CFLAGS) $(EXTRA_CFLAGS) -DTCPWRAPPERS -DUSE_SHADOW -DAUTO_UNCOMPRESS -DINTERNAL_LS
LIBS = $(EXTRA_LIBS) -lutil -lwrap -lnsl -lcrypt
Bu sayede programın PAM ile çalışmak üzere değil, sistemdeki kullanıcı veritabanıyla çalışabilecek
şekilde derlenmesini sağladık.
Makefile üzerinde gerekli değişiklikleri yaptıktan sonra make
komutu ile programı derleyebiliriz. Derleme işlemi bittiğinde yaklaşık 80 kB büyüklüğünde
ftpd uygulaması oluşacaktır. strip ftpd komutu ile uygulama
içerisinden ihtiyaç duymayacağımız sembollerin çıkartılmasını da sağlayınca uygulamanın boyu 65 kB
seviyelerine inecektir. Bu uygulamayı SBC sistemimizdeki /usr/sbin dizini altına
in.ftpd adıyla taşımalıyız.
 | Not |
|---|
bsd-ftpd uygulamasını derlemek için GNU Libc kütüphanelerin yanısıra
libwrap0-dev paketinden çıkan geliştirme kütüphanelerine de ihtiyaç vardır
(tcpd.h vb. için).
|
Derlediğimiz uygulamayı SBC üzerine atıp arka planda inetd'nin de çalıştığından
emin olunca Linux yüklü sistemimizden SBC üzerindeki FTP sunucumuzu test edebiliriz:
laptop:~$ ftp 192.168.0.155
Connected to 192.168.0.155.
220 embed FTP server (Version 6.5/OpenBSD, linux port 0.3.3) ready.
Name (192.168.0.155:demirten): root
331 Password required for root.
Password:
230 User root logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls /boot
200 PORT command successful.
150 Opening ASCII mode data connection for '/bin/ls'.
total 764
-rw-r--r-- 1 root root 7964 Jun 1 10:49 boot-menu.b
-rw-r--r-- 1 root root 512 Jun 1 14:34 boot.0300
-rw-r--r-- 1 root root 7964 Jun 1 10:50 boot.b
-rw-r--r-- 1 root root 728 Jun 1 10:50 chain.b
-rw-r--r-- 1 root root 744821 Jun 1 12:05 kernel
-rw------- 1 root root 12288 Jun 1 14:34 map
226 Transfer complete.
ftp> bye
221 Goodbye.
laptop:~$
Bu ekran çıktısı artık disket sürücüyü sistemden çıkarabileceğimizin müjdesini veriyor bize :) Peki
ağ bağlantısı sağlayamayanlar ne yapacak? Bunun için
Seri Portların Kullanımı bölümüne
bakın.