《在Linux中tftp服务器的搭建.docx》由会员分享,可在线阅读,更多相关《在Linux中tftp服务器的搭建.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、在Linux中tftp服务器的搭建一、TFTP的建立 嵌入式linux的tftp开发环境包括两个方面:一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp-client支持。因为u-boot本身内置支持tftp-client,所以嵌入式目标系统端就不用配置了。我们要做的是在服务器端(即主机)上安装TFTP服务,并且正确地配置TFTP服务的路径和参数。 下面我尝试了两种搭建TFTP的方法,都实测成功。 1、安装tftp所需软件包: tftp有好几种版本,其中tftp和tftpd是最经典、最常用的。还有增强版,如atftp和atftpd、tftp-hpa和tftpd-h
2、pa等。所以配置TFTP的方法也不唯一。 传统方法(xinetd): sudoapt-getinstalltftp sudoapt-getinstalltftpd sudoapt-getinstallxinetd (备注:如果是CentOS系统,则可以使用yuminstalltftptftpdxinetd命令来下载安装) tftp是客户端,作用是从别人的TFTP服务器端上传/下载东西。 tftpd是服务端,字母d代表daemon,作用是为别人提供TFTP服务,供别人上传/下载东西。 xinetd是inetd的扩展。inetd服务器是一个专门管理入网连接的网络后台程序,xinetd现在已经取代i
3、netd,它一个守护进程,用于处理对各种服务的请求。tftp是要用inetd来控制的。 另一种更简单的方法:tftp-hpa sudoapt-getinstalltftp-hpa sudoapt-getinstalltftpd-hpa tftp-hpa与tftp作用相当,但两者是冲突的,不能同时安装。tftpd-hpa与tftpd的关系同理。这种方法下,不需要inetd服务就可以。网上也有人同时装了xinetd,不仅需要配置,似乎还容易出问题。 2、创建TFTP目录 首先需要建立一个TFTP目录,以供上传和下载。当然也可以使用现有的目录。然后需要设定该目录的权限,决定是否能够下载和上传文件。对
4、于日常使用,我们一般就将其权限设置为最高,为所有用户组都添加所有权限(读+写+执行=4+2+1=7): sudomkdir/home/tftpboot cd/home sudochmod777tftpbootR 我们的TFTP目录为/home/example/tftp,其权限已经是最高。 3、修改配置文件 对于xinetd方法,要在/etc/xinetd.d/下,修改配置文件tftp。如果是第一次使用,没有这个文件,需要自己创建一个空文件。可以利用touch指令: cd/etc/xinetd.d touchtftp sudovimtftp 在打开的文件中输入以下内容: servicetftp
5、socket_type=dgram protocol=udp wait=yes user=root server=/usr/sbin/in.tftpd server_args=-s/home/tftpboot disable=no per_source=11 cps=1002 flags=IPv4 socket_type:网络套接字类型,流或者数据包 protocol:IP协议,通常是TCP或者UDP user:运行进程的用户ID,当前用户或root server:执行的完整路径 server_args:传递给server的变量或值。前面的-s代表tftp参数,后面/home/tftpboot
6、是TFTP的根目录,可以根据自己实际情况来修改地址,如/home/example/tftp。 对于tftp-hpa方法,不需要装inetd就能使用,只要修改tftpd-hpa相应的配置文件就可以。 sudovim/etc/default/tftpd-hpa 原始的内容如下: #/etc/default/tftpd-hpa TFTP_USERNAME=tftp TFTP_DIRECTORY=/var/lib/tftpboot TFTP_ADDRESS=0.0.0.0:69 TFTP_OPTIONS=-secure 我将其修改为: #/etc/default/tftpd-hpa TFTP_USER
7、NAME=donghai TFTP_DIRECTORY=/home/tftpboot TFTP_ADDRESS=0.0.0.0:69 TFTP_OPTIONS=-l-c-s 说明: TFTP_USERNAME:必须改为当前的用户名,或者root; TFTP_DIRECTORY:我们设定的TFTP根目录; TFTP_OPTIONS:TFTP启动参数。意义如下: -l:以standalone/listen模式启动TFTP服务,而不是从inetd启动。 (这里也表明,再像前面一样装xinetd,其实是多此一举) -c:可创建新文件。默认情况下,TFTP只允许覆盖原有文件,不能创建新文件。 -s:改变
8、TFTP启动的根目录。加了-s后,客户端使用TFTP时,不再需要输入指定目录,填写文件的完整路径,而是使用配置文件中写好的目录。这样也可以增加安全性。 我一开始没有注意TFTP_USERNAME这一项,随便取了一个名字,一直没有成功,后来改用自己的用户名,才测试成功。 4、重新启动服务 如果用xinetd法,修改好tftp的配置文件后,需要重新启动一下xinetd。每次修改完配置文件后,都需要重新启动该服务: sudo/etc/init.d/xinetdrestart 如果用tftp-hpa法,要重启tftpd-hpa服务: sudoservicetftpd-hparestart 如果显示如下
9、,说明配置正确: tftpd-hpastart/running,process2290 之前我没有把TFTP_USERNAME该为用户名,而是随便取了一个,则会提示如下: tftpd-hpastart/running 对比发现,这里并没有启动进程,因为配置中TFTP_USERNAME不正确,也就没有成功开启TFTP。 5、确认tftp服务是否已经开启 下面确认tftp服务是否开启(基于tftp-hpa方法)。 查看tftp相关进程可以用以下指令: psaux|greptftp 弹出以下信息 root22900.00.?Ss19:450:00/usr/sbin/in.tftpd-listen-u
10、serdonghai-address0.0.0.0:69-l-c-s/home/tftpboot 可以看到,/usr/sbin/in.tftpd已经启动,说明TFTP服务已经开启了,进程号正是2290。 -listen对应配置文件中的参数-l -userdonghai就是配置文件中的TFTP_USERNAME /home/tftpboot是配置文件中的TFTP_DIRECTORY 另一种方法: netstat-a|greptftp 如果看到如下提示,说明TFTP服务开启了。 udp00*:tftp*:* 二、TFTP的使用 1、连接本机 连接本机有三种方法,一是输入真实的IP地址,可以用ifc
11、onfig查得;二是用localhost来代表本机;三是使用地址127.0.0.1,这个IP地址始终代表本机的IP。 先在TFTP目录下新建一个文件a,在里面随便写一些内容,然后修改其权限为777。接着,输入以下指令的任意一条,进入TFTP命令行。 tftp192.168.1.201(自己设定的IP) tftplocalhost tftp127.0.0.1 TFTP命令行的基本指令: put:将文件上传到TFTP目录 get:取得TFTP目录上的文件 quit/q:退出TFTP 2.常见问题 下面看看当配置参数和文件权限改变时,会出现什么现象。我列举了一些常见问题: tftpgeta Tran
12、sfertimedout. 原因:tftpd服务没有启动。 需要注意的是,必须使TFTP的用户名和当前的系统的用户名一致,否则就无法成功启动tftpd服务。 tftpgeta permissiondenied 原因:操作者权限不够,比如当前的目录是/etc,不能随便get文件下来。需要提升权限。切换到root账户,或者直接执行sudotftp。 tftpputt1 tftp:t1:Nosuchfileordirectory 原因:当前目录下没有t1文件 tftpgetd Errorcode1:Filenotfound 原因:TFTP根目录下没有该文件 Errorcode2:Onlyabsolu
13、tefilenamesallowed 原因:TFTP启动配置参数没有-s,或者在DIRECTORY中没有填写目录 以下针对xinetd方法: tftpputa Errorcode2:Accessviolation 原因:1TFTP启动配置中无-c,TFTP目录没有同名文件 2TFTP启动配置中无-c,TFTP目录有同名文件,但无写权限 解决:chmod777a 以下针对tftp-hpa方法: tftpputb Errorcode1:Filenotfound 原因:启动配置参数无-c,根目录下无同名文件 (注意和前面情况的区别,不是当前目录下没有b文件,而是TFTP目录下找不到同名文件b) tf
14、tpputb Errorcode2:Filemusthaveglobalwritepermissions 原因:根目录下有同名文件,该文件无写权限(启动配置参数有无-c都这样) 经测试,在tftp-hpa方法下,下列情况可以put成功: l启动配置参数无-c,根目录下有同名文件,有写权限 l启动配置参数有-c,根目录下无同名文件 l启动配置参数有-c,根目录下有同名文件,有写权限 在xinetd方法下,我将server_args=-s/home/tftpboot改为 server_args=-s/home/tftpboot-c或server_args=-c-s/home/tftpboot 试图
15、增加-c参数,但重启xinetd后,却发现tftp基本的下载和上传都不行了。 因此在xinetd方法下,如需上传,应该让TFTP目录下有一个同名文件(开w权限),尚未找到直接上传文件的方法。 TFTP协议的优势 尽管与FTP相比TFTP的功能要弱得多,但是TFTP具有两个优点: 1)TFTP能够用于那些有UDP而无TCP的环境; 2)TFTP代码所占的内存要比FTP小。 尽管这两个优点对于普通计算机来说并不重要,但是对于那些不具备磁盘来存储系统软件的自举硬件设备来说TFTP特别有用。 TFTP协议与FTP协议的相同点 TFTP协议的作用和我们经常使用的FTP大致相同,都是用于文件传输,可以实现网络中两台计算机之间的文件上传与下载。可以将TFTP协议看作是FTP协议的简化版本。 TFTP协议与FTP协议的不同点 1)TFTP协议不需要验证客户端的权限,FTP需要进行客户端验证; 2)TFTP协议一般多用于局域网以及远程UNIX计算机中,而常见的FTP协议则多用于互联网中; 3)FTP客户与服务器间的通信使用TCP,而TFTP客户与服务器间的通信使用的是UDP; 4)TFTP只支持文件传输。也就是说,TFTP不支持交互,而且没有一个庞大的命令集。最为重要的是,TFTP不允许用户列出目录内容或者与服务器协商来决定哪些是可得到的文件。