Posted on 2007-07-24 23:57
生活在別處 閱讀(10011)
評論(0) 編輯 收藏 所屬分類:
Unix
TFTP是用來下載遠(yuǎn)程文件的最簡單網(wǎng)絡(luò)協(xié)議,它基于UDP協(xié)議而實現(xiàn)。嵌入式linux的tftp開發(fā)環(huán)境包括兩個方面:一是嵌入式linux宿主機(jī)的 tftp-server支持,二是嵌入式linux目標(biāo)機(jī)的tftp-client支持。因為u-boot本身內(nèi)置支持tftp-client,所以嵌入式目標(biāo)機(jī)就不用配置了。下面就詳細(xì)介紹一下linux宿主機(jī)tftp-server的安裝配置。
在FC6光盤的ISO鏡像中,有tftp-server的rpm安裝包。
(1)安裝
#mount -o loop <FC6光盤ISO鏡像.iso> /mnt/CD //掛載光盤
#rpm -ivh tftp-0.42-3.1.i386.rpm //安裝tftp-client
#rpm -ivh tftp-server-0.42-3.1.i386.rpm //安裝tftp-server
#umount /mnt/CD //卸載光盤
(2)修改文件
在linux 下,不管使用的是哪一種super-server,inetd或者xinetd,默認(rèn)情況下TFTP服務(wù)是禁用的,所以要修改文件來開啟服務(wù)。根據(jù)(1)的安裝方法,可以修改文件/etc/xinetd.d/tftp。主要是設(shè)置TFTP服務(wù)器的根目錄,開啟服務(wù)。修改后的文件如下:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
說明:修改項server_args= -s <path> -c,其中<path>處可以改為你的tftp-server的根目錄,參數(shù)-s指定chroot。
(3)創(chuàng)建tftp根目錄,啟動tftp-server。
#mkdir /tftpboot
#chmod o+w /tftpboot
#service xinetd restart
這樣,tftp-server就啟動了。
(4)配置防火墻
TFTP (Trivial File Transfer Protocol),中譯簡單文件傳輸協(xié)議或小型文件傳輸協(xié)議. 大家一定記得在2003年8月12日全球爆發(fā)沖擊波(Worm.Blaster)病毒,這種病毒會監(jiān)聽端口69,模擬出一個TFTP服務(wù)器,并啟動一個攻擊傳播線程,不斷地隨機(jī)生成攻擊地址,進(jìn)行入侵。另外tftp被認(rèn)為是一種不安全的協(xié)議而將其關(guān)閉,同時也是防火墻打擊的對象,這也是有道理的。tftp 在嵌入式linux還是有用武之地的。
打開防火墻,允許tftp訪問網(wǎng)絡(luò)。
[root@localhost /]# setup
Firewall configuration--> Customize--other port 處:69:udp,保存就可以了。
你可以登陸本機(jī)測試以下,命令如下:
#tftp your-ip-address
tftp>get <download file>
tftp>put <upload file>
tftp>q
#
================整理====================
########################################################
安裝過程中出現(xiàn)的問題及原因
現(xiàn)象一:
tftp> get test.log
Transfer timed out.
原因:
tftpd服務(wù)沒有啟動
現(xiàn)象二:
tftp> get test.log
Error code 2: Only absolute filenames allowed
原因:
在/etc/xinetd.d/tftpd中設(shè)置的server_args為/etc/default/tftpd-hpa
cat /etc/default/tftpd-hpa
#Defaults for tftpd-hpa
RUN_DAEMON="no"
OPTIONS="-s /home/tftpd -c -p -U 077 -u tftpd"
ps:實際根本就不用/etc/default/tftpd-hpa文件,它應(yīng)該是用在standalone模式下的
現(xiàn)象三:
tftp> put ex070416.log
Error code 1: File not found
原因:
指定的文件不存在;或tftpd啟動參數(shù)中沒有指定-c選項,允許上傳文件
########################################################
其它常用選項如下:
-l 使用standalone模式運(yùn)行,此模式下,將會忽略-t選項
-a address:port 在standalone模式下服務(wù)所在的IP與端口,如果不指定,則在本機(jī)所有IP,/etc/service中指定的port上偵聽連接
-c 允許在服務(wù)器上新建文件,否則只允許更新現(xiàn)有的文件。如果未指定-U或-p選項,則允許任何人上傳文件
-s directory 服務(wù)器端默認(rèn)的目錄,默認(rèn)為/var/lib/tftpdboot
-u username tftpd服務(wù)以什么身份運(yùn)行,默認(rèn)是nobody,一般可以新建一個tftpd的賬號來運(yùn)行
-U umask 上傳的文件的掩碼,如果未指定-p則為000,如果指定了-p,則采用指定的umask
-p 對于通過-u指定的用戶執(zhí)行的動作,不做額外的權(quán)限檢查
更多權(quán)限請見man tftpd。