TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,基于UDP协议提供不复杂、开销不大的文件传输服务,端口号为69。在嵌入式Linux系统中,TFTP服务器作为工作于宿主机上的软件,主要是对目标机提供映像等文件的下载服务。本文重点介绍基于Linux发行版Ubuntu13.04安装配置TFTP服务的方法。
安装软件包:
要想在Ubuntu系统上使用TFTP服务,首先必须确保系统中已安装了与TFTP服务相关的软件包,这里包括tftpd、tftp 以及 xinetd 三个相关软件包。
其中,tftpd是 Server 服务器端,如果你为别人提供 TFTP 服务供别人上传/下载,那么就需要 tftpd 服务程序;tftp 是 Client 客户端,如果你要从别人的 TFTP 服务器端上传/下载,则需要使用 tftp 服务程序;xinetd 是一个运行于类Unix操作系统上的开放源代码的超级服务器(Super-server)守护进程,它的功能是管理网络相关的服务,由于其较高的安全性,已经逐渐取代先前的inetd。
终端里使用如下命令安装:
$ sudo apt-get install tftpd tftp xinetd |
创建配置文件:
在/etc/xinetd.d/目录下创建一个配置文件tftp:
$ sudo vi tftp |
在这个配置文件中输入以下内容:
service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in .tftpd server_args = -u root -s /tftpboot -c disable = no per_source = 11 cps = 100 2 flags = IPv4 } |
保存退出文件。
建立tftp服务文件目录:
这里选择在根目录下建立tftp服务文件目录(TFTP上传和下载文件的位置),当然也可选择在其它地方建立这一目录,但有一点,必须更改新建目录的权限为777。命令行命令如下:
$ sudo mkdir /tftpboot |
$ sudo chmod 777 /tftpboot -R |
重新启动服务:
使用如下这条命令:
$ sudo /etc/init .d /xinetd restart |
至此,Ubuntu tftp服务已经安装配置完成,下面对tftp服务进行测试。(测试前提是已经在tftp服务文件目录即/tftpboot/下创建了一个测试文件 test.txt ,且文件权限至少为666)
$tftp 127.0.0.1 tftp> put test .txt Sent 1018 bytes in 0.0 seconds tftp> get test .txt Received 1018 bytes in 0.1 seconds tftp> quit |
要通过get命令,可以把当前目录下的test.txt文件,通过Ubuntu tftp上传到它的服务文件目录。这时,在/tftpboot下面会出现test.txt文件。通过put命令,可以从/tftpboot下,下载test.txt文件。这样就验证了Ubuntu tftp服务配置的正确性。当文件上传与下载结束后,可以通过quit命令退出。严格按照以上步骤配置Ubuntu tftp服务,一般都可以成功。如果出现无法get或者put的时候,可以查看一下防火墙是否关闭。
最后有一点需要注意:tftp 服务器默认规则是可以下载,但是对于上传一个新文件,则必须保证在服务文件目录/tftpboot/下有一个与待上传文件同名的文件,且具备相应的可读写(覆盖)权限,这样才能成功上传文件。否则,会出现Error code 2: Access violation的错误。