Posted on 2007-07-24 23:57
生活在別處 閱讀(10010)
評論(0) 編輯 收藏 所屬分類:
Unix
TFTP是用來下載遠程文件的最簡單網絡協議,它基于UDP協議而實現。嵌入式linux的tftp開發環境包括兩個方面:一是嵌入式linux宿主機的 tftp-server支持,二是嵌入式linux目標機的tftp-client支持。因為u-boot本身內置支持tftp-client,所以嵌入式目標機就不用配置了。下面就詳細介紹一下linux宿主機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,默認情況下TFTP服務是禁用的,所以要修改文件來開啟服務。根據(1)的安裝方法,可以修改文件/etc/xinetd.d/tftp。主要是設置TFTP服務器的根目錄,開啟服務。修改后的文件如下:
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的根目錄,參數-s指定chroot。
(3)創建tftp根目錄,啟動tftp-server。
#mkdir /tftpboot
#chmod o+w /tftpboot
#service xinetd restart
這樣,tftp-server就啟動了。
(4)配置防火墻
TFTP (Trivial File Transfer Protocol),中譯簡單文件傳輸協議或小型文件傳輸協議. 大家一定記得在2003年8月12日全球爆發沖擊波(Worm.Blaster)病毒,這種病毒會監聽端口69,模擬出一個TFTP服務器,并啟動一個攻擊傳播線程,不斷地隨機生成攻擊地址,進行入侵。另外tftp被認為是一種不安全的協議而將其關閉,同時也是防火墻打擊的對象,這也是有道理的。tftp 在嵌入式linux還是有用武之地的。
打開防火墻,允許tftp訪問網絡。
[root@localhost /]# setup
Firewall configuration--> Customize--other port 處:69:udp,保存就可以了。
你可以登陸本機測試以下,命令如下:
#tftp your-ip-address
tftp>get <download file>
tftp>put <upload file>
tftp>q
#
================整理====================
########################################################
安裝過程中出現的問題及原因
現象一:
tftp> get test.log
Transfer timed out.
原因:
tftpd服務沒有啟動
現象二:
tftp> get test.log
Error code 2: Only absolute filenames allowed
原因:
在/etc/xinetd.d/tftpd中設置的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文件,它應該是用在standalone模式下的
現象三:
tftp> put ex070416.log
Error code 1: File not found
原因:
指定的文件不存在;或tftpd啟動參數中沒有指定-c選項,允許上傳文件
########################################################
其它常用選項如下:
-l 使用standalone模式運行,此模式下,將會忽略-t選項
-a address:port 在standalone模式下服務所在的IP與端口,如果不指定,則在本機所有IP,/etc/service中指定的port上偵聽連接
-c 允許在服務器上新建文件,否則只允許更新現有的文件。如果未指定-U或-p選項,則允許任何人上傳文件
-s directory 服務器端默認的目錄,默認為/var/lib/tftpdboot
-u username tftpd服務以什么身份運行,默認是nobody,一般可以新建一個tftpd的賬號來運行
-U umask 上傳的文件的掩碼,如果未指定-p則為000,如果指定了-p,則采用指定的umask
-p 對于通過-u指定的用戶執行的動作,不做額外的權限檢查
更多權限請見man tftpd。