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.