11.3 TFTP简单文件传输协议

简单文件传输协议(Trivial File Transfer Protocol,TFTP)是一种基于UDP协议在客户端和服务器之间进行简单文件传输的协议。顾名思义,它提供不复杂、开销不大的文件传输服务(可将其当作FTP协议的简化版本)。

TFTP的命令功能不如FTP服务强大,甚至不能遍历目录,在安全性方面也弱于FTP服务。而且,由于TFTP在传输文件时采用的是UDP协议,占用的端口号为69,因此文件的传输过程也不像FTP协议那样可靠。但是,因为TFTP不需要客户端的权限认证,也就减少了无谓的系统和网络带宽消耗,因此在传输琐碎(trivial)不大的文件时,效率更高。

接下来在系统上安装TFTP的软件包,进行体验。

  1. [root@linuxprobe ~]# yum install tftp-server tftp
  2. Loaded plugins: langpacks, product-id, subscription-manager
  3. ………………省略部分输出信息………………
  4. Installing:
  5. tftp x86_64 5.2-11.el7 rhel 35 k
  6. tftp-server x86_64 5.2-11.el7 rhel 44 k
  7. Installing for dependencies:
  8. xinetd x86_64 2:2.3.15-12.el7 rhel 128 k
  9. Transaction Summary
  10. ================================================================================
  11. Install 2 Packages (+1 Dependent package)
  12. Total download size: 207 k
  13. Installed size: 373 k
  14. Is this ok [y/d/N]: y
  15. Downloading packages:
  16. ………………省略部分输出信息………………
  17. Installed:
  18. tftp.x86_64 0:5.2-11.el7 tftp-server.x86_64 0:5.2-11.el7
  19. Dependency Installed:
  20. xinetd.x86_64 2:2.3.15-12.el7
  21. Complete!

在RHEL 7系统中,TFTP服务是使用xinetd服务程序来管理的。xinetd服务可以用来管理多种轻量级的网络服务,而且具有强大的日志功能。简单来说,在安装TFTP软件包后,还需要在xinetd服务程序中将其开启,把默认的禁用(disable)参数修改为no:

  1. [root@linuxprobe ~]# vim /etc/xinetd.d/tftp
  2. service tftp
  3. {
  4. socket_type = dgram
  5. protocol = udp
  6. wait = yes
  7. user = root
  8. server = /usr/sbin/in.tftpd
  9. server_args = -s /var/lib/tftpboot
  10. disable = no
  11. per_source = 11
  12. cps = 100 2
  13. flags = IPv4
  14. }

然后,重启xinetd服务并将它添加到系统的开机启动项中,以确保TFTP服务在系统重启后依然处于运行状态。考虑到有些系统的防火墙默认没有允许UDP协议的69端口,因此需要手动将该端口号加入到防火墙的允许策略中:

  1. [root@linuxprobe ~]# systemctl restart xinetd
  2. [root@linuxprobe ~]# systemctl enable xinetd
  3. [root@linuxprobe ~]# firewall-cmd --permanent --add-port=69/udp
  4. success
  5. [root@linuxprobe ~]# firewall-cmd --reload
  6. success

TFTP的根目录为/var/lib/tftpboot。我们可以使用刚安装好的tftp命令尝试访问其中的文件,亲身体验TFTP服务的文件传输过程。在使用tftp命令访问文件时,可能会用到表11-5中的参数。

表11-5 tftp命令中可用的参数以及作用

命令作用
?帮助信息
put上传文件
get下载文件
verbose显示详细的处理信息
status显示当前的状态信息
binary使用二进制进行传输
ascii使用ASCII码进行传输
timeout设置重传的超时时间
quit退出
  1. [root@linuxprobe ~]# echo "i love linux" > /var/lib/tftpboot/readme.txt
  2. [root@linuxprobe ~]# tftp 192.168.10.10
  3. tftp> get readme.txt
  4. tftp> quit
  5. [root@linuxprobe ~]# ls
  6. anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures readme.txt Videos
  7. Desktop Downloads Music Public Templates
  8. [root@linuxprobe ~]# cat readme.txt
  9. i love linux

当然,TFTP服务的玩法还不止于此,第19章会将TFTP服务与其他软件相搭配,组合出一套完整的自动化部署系统方案。大家继续加油!

出现问题?大胆提问!

因读者们硬件不同或操作错误都可能导致实验配置出错,请耐心再仔细看看操作步骤吧,不要气馁~

Linux技术交流请加A群:560843(),B群:340829(推荐),C群:463590(推荐),点此查看全国群

*本群特色:通过口令验证确保每一个群员都是《Linux就该这么学》的读者,答疑更有针对性,不定期免费领取定制礼品。

本章节的复习作业(答案就在问题的下一行哦,用鼠标选中即可看到的~)

1.简述FTP协议的功能作用以及所占用的端口号。

答:FTP是一种在互联网中进行文件传输的协议,默认使用20、21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发起的相关FTP命令与参数。

2.vsftpd服务程序提供的三种用户认证模式各自有什么特点?

答:匿名开放模式是任何人都可以无需密码认证即可直接登录到FTP服务器的验证方式;本地用户模式是通过系统本地的账户密码信息登录到FTP服务器的认证方式;虚拟用户模式是通过创建独立的FTP用户数据库文件来进行认证并登录到FTP服务器的认证方式,相较来说它也是最安全的认证模式。

3. 使用匿名开放模式登录到一台用vsftpd服务程序部署的FTP服务器上时,默认的FTP根目录是什么?

答:使用匿名开放模式登录后的FTP根目录是/var/ftp目录,该目录内默认还会有一个名为pub的子目录。

4.简述PAM的功能作用。

答:PAM是一组安全机制的模块(插件),系统管理员可以用来轻易地调整服务程序的认证方式,而不必对应用程序进行过多修改。

5.使用虚拟用户模式登录FTP服务器的所有用户的权限都是一样的吗?

答:不一定,可以通过分别定义用户权限文件来为每一位用户设置不同的权限。

6.TFTP协议与FTP协议有什么不同?

答:TFTP协议提供不复杂、开销不大的文件传输服务(可将其当作FTP协议的简化版本)。

本文原创地址:https://www.linuxprobe.com/chapter-11.html   编辑:刘遄,审核员:暂无

为您推荐一些与本文相关的文章:

转载必需保留本文链接:https://www.linuxprobe.com/chapter-11.html

本文依据CC-BY-NC-SA 3.0协议发布,竭诚为读者提供Linux视频教程、Linux学习资料以及红帽考试资料等优质学习资源。