一、文件传输协议
FTP 是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用 20、21号端口,其中端口 20(数据端口)用于进行数据传输,端口 21(命令端口)用于接受客户端发出的相关 FTP 命令与参数。FTP 服务器普遍部署于内网中,具有容易搭建、方便管理的特点。而且有些 FTP 客户端工具还可以支持文件的多点下载以及断点续传技术,因此 FTP 服务得到了广大用户的青睐。
FTP 服务器是按照 FTP 协议在互联网上提供文件存储和访问服务的主机,FTP 客户端则是向服务器发送连接请求,以建立数据传输链路的主机。FTP 协议有下面两种工作模式。
➢主动模式:FTP 服务器主动向客户端发起连接请求。
➢被动模式:FTP 服务器等待客户端发起连接请求(FTP 的默认工作模式) 。
防火墙一般是用于过滤从外网进入内网的流量,因此有些时候需要将 FTP 的工作模式设置为主动模式,才可以传输数据。
vsftpd(very secure ftp daemon,非常安全的 FTP 守护进程)是一款运行在 Linux 操作系统上的 FTP 服务程序,不仅完全开源而且免费,此外,还具有很高的安全性、传输速度,以及支持虚拟用户验证等其他 FTP 服务程序不具备的特点。
# yum install vsftpd
Loaded plugins: fastestmirror, langpacks, product-id, search-disabled-repos,
: subscription-manager
………………省略部分输出信息………………
Dependencies Resolved
====================================================================
Package Arch Version Repository Size
====================================================================
Installing:
vsftpd x86_64 3.0.2-25.el7 base 171 k
Transaction Summary
====================================================================
Install 1 Package
Total download size: 171 k
Installed size: 353 k
Is this ok [y/d/N]: y
Downloading packages:
vsftpd-3.0.2-25.el7.x86_64.rpm | 171 kB 00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : vsftpd-3.0.2-25.el7.x86_64 1/1
Verifying : vsftpd-3.0.2-25.el7.x86_64 1/1
Installed:
vsftpd.x86_64 0:3.0.2-25.el7
Complete!
iptables 防火墙管理工具默认禁止了 FTP 传输协议的端口号,因此在正式配置 vsftpd服务程序之前,为了避免这些默认的防火墙策略“捣乱” ,还需要清空 iptables 防火墙的默认策略,并把当前已经被清理的防火墙策略状态保存下来:
# iptables -F
# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
grep 命令后面添加-v 参数,过滤并反选出没有包含井号(#)的参数行(即过滤掉所有的注释信息) ,然后将过滤后的参数行通过输出重定向符写回原始的主配置文件中:
# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
# grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
vsftpd服务程序常用的参数以及作用
listen=[YES|NO]:是否以独立运行的方式监听服务
listen_address=IP地址:设置要监听的IP地址
listen_port=21:设置FTP服务的监听端口
download_enable=[YES|NO]:是否允许下载文件
max_clients=0:最大客户端连接数,0为不限制
max_per_ip=0:同一IP地址的最大连接数,0为不限制
anonymous_enable=[YES|NO]:是否允许匿名用户访问
anon_upload_enable=[YES|NO]:是否允许匿名用户上传文件
anon_umask=022:匿名用户上传文件的umask值
anon_root=/vqr/ftp:匿名用户的FTP根目录
anon_mkdir_write_enable=[YES|NO]:是否允许匿名用户创建目录
anon_other_write_enable=[YES|NO]:是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限)
anon_max_rate=0:匿名用户的最大传输速度(字节/秒),0为不限制
local_enable=[YES|NO]:是否允许本地用户登录FTP
local_umask=022:本地用户上传文件的umask值
local_root=/var/ftp:本地用户的FTP根目录
chroot_local_user=[YES|NO]:是否将用户权限禁锢在FTP目录,以确保安全
local_max_rat=0:本地用户最大传输速率(字节/秒),0为不限制
二、vsftpd服务程序
vsftpd 作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到 FTP 服务器上。
➢匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP 服务器。
➢本地用户模式:是通过 Linux 系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果被黑客破解了账户的信息,就可以畅通无阻地登录 FTP 服务器,从而完全控制整台服务器。
➢虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为 FTP 服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供 FTP 服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。
ftp 是 Linux 系统中以命令行界面的方式来管理 FTP 传输服务的客户端工具。
# yum install ftp
Loaded plugins: fastestmirror, langpacks, product-id, search-disabled-repos,
: subscription-manager
………………省略部分输出信息………………
Dependencies Resolved
====================================================================
Package Arch Version Repository Size
====================================================================
Installing:
ftp x86_64 0.17-67.el7 base 61 k
Transaction Summary
====================================================================
Install 1 Package
Total download size: 61 k
Installed size: 96 k
Is this ok [y/d/N]: y
Downloading packages:
ftp-0.17-67.el7.x86_64.rpm | 61 kB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : ftp-0.17-67.el7.x86_64 1/1
Verifying : ftp-0.17-67.el7.x86_64 1/1
Installed:
ftp.x86_64 0:0.17-67.el7
Complete!
1.匿名开放模式
可以向匿名用户开放的权限参数以及作用:
anonymous_enable=YES:允许匿名访问模式
anon_umask=022:匿名用户上传文件的umask值
anon_upload_enable=YES:允许匿名用户上传文件
anon_mkdir_write_enable=YES:允许匿名用户创建目录
anon_other_write_enable=YES:允许匿名用户修改目录名称或删除目录
向vsftpd.conf文件中正确填写配置参数(第2-5行):
# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
重户vsftpd服务程序,让新的配置参数生效。
# systemctl restart vsftpd
# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-
user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
客户端安装ftp程序,并访问vsftp服务端:
# ftp 192.168.1.145
Connected to 192.168.1.145 (192.168.1.145).
220 (vsFTPd 3.0.2)
Name (192.168.1.145:root): anonymous
331 Please specify the password.
Password:(此处按下回车键即可)
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
550 Create directory operation failed.
ftp>
系统显示拒绝创建目录! 我们明明在前面清空了 iptables 防火墙策略,而且也在vsftpd 服务程序的主配置文件中添加了允许匿名用户创建目录和写入文件的权限啊。在 vsftpd 服务程序的匿名开放认证模式下,默认访问的是/var/ftp 目录。查看该目录的权限得知,只有 root 管理员才有写入权限。怪不得系统会拒绝操作呢!将目录的所有者身份改成系统账户 ftp 即可(该账户在系统中已经存在) ,这样应该可以了吧:
# ls -ld /var/ftp/pub
drwxr-xr-x. 2 root root 6 Oct 31 2018 /var/ftp/pub
# chown -Rf ftp /var/ftp/pub
# ls -ld /var/ftp/pub
drwxr-xr-x. 2 ftp root 6 Oct 31 2018 /var/ftp/pub
再次远程登录:
# ftp 192.168.1.145
Connected to 192.168.1.145 (192.168.1.145).
220 (vsFTPd 3.0.2)
Name (192.168.1.145:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
550 Create directory operation failed.
还是报错。使用 getsebool 命令查看与 FTP 相关的 SELinux 域策略都有哪些:
# getsebool -a | grep ftp
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off
修改策略规则,并永久生效:
# setsebool -P ftpd_full_access=on
现次远程登录,测试:
# ftp 192.168.1.145
Connected to 192.168.1.145 (192.168.1.145).
220 (vsFTPd 3.0.2)
Name (192.168.1.145:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
257 "/pub/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir database
250 Remove directory operation successful.
ftp> exit
221 Goodbye.
现在顺利执行了创建、修改和删除等操作。
2.本地用户模式
本地用户模式使用的权限参数以及作用:
anonymous_enable=NO:禁止匿名访问模式
local_enable=YES:允许本地用户模式
write_enable=YES:设置可写权限
local_umask=022:本地用户模式创建文件的umask值
userlist_enable=YES:启用“禁止用户名单”,名单文件为ftpusers和user_list
userlist_deny=YES:开启用户作用名单文件功能
修改vsftpd.conf文件第1-4行:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
重启vsftpd服务程序,让新的配置参数生效。
# systemctl restart vsftpd
登录FTP服务器:
# ftp 192.168.1.145
Connected to 192.168.1.145 (192.168.1.145).
220 (vsFTPd 3.0.2)
Name (192.168.1.145:root): root
530 Permission denied.
Login failed.
ftp>
可见,在我们输入 root 管理员的密码之前,就已经被系统拒绝访问了。这是因为vsftpd服务程序所在的目录中默认存放着两个名为“用户名单”的文件(ftpusers 和ser_list) 。vsftpd 服务程序目录中的这两个文件里面写有某位用户的名字,就不再允许这位用户登录到 FTP服务器上。
# cat /etc/vsftpd/user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
games
nobody
# cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
games
nobody
vsftpd 服务程序为了保证服务器的安全性而默认禁止了 root 管理员和大多数系统用户的登录行为,这样可以有效地避免黑客通过 FTP 服务对 root 管理员密码进行暴力破解。如果您确认在生产环境中使用 root 管理员不会对系统安全产生影响,只需按照上面的提示删除掉 root 用户名即可。我们也可以选择 ftpusers 和 user_list 文件中没有的一个普通用户尝试登录 FTP 服务器:
# ftp 192.168.1.145
Connected to 192.168.1.145 (192.168.1.145).
220 (vsFTPd 3.0.2)
Name (192.168.1.145:root): linuxprobe
331 Please specify the password.
Password:(此处输入该用户的密码)
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir files
257 "/home/linuxprobe/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir database
250 Remove directory operation successful.
ftp> exit
221 Goodbye.
如果还是操作失败,就做如下设置:
# getsebool -a | grep ftp
# setsebool -P ftpd_full_access=on
3.虚拟用户模式
虚拟用户模式是这三种模式中最安全的一种认证模式,当然,因为安全性较之于前面两种模式有了提升,所以配置流程也会稍微复杂一些。
(1)创建用于进行 FTP 认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。例如,我们分别创建出 zhangsan 和 lisi 两个用户,密码均为 redhat:
# cd /etc/vsftpd/
# vim vuser.list
zhangsan
redhat
lisi
redhat
但是,明文信息既不安全,也不符合让 vsftpd 服务程序直接加载的格式,因此需要使用db_load 命令用哈希(hash)算法将原始的明文信息文件转换成数据库文件,并且降低数据库文件的权限(避免其他人看到数据库文件的内容) ,然后再把原始的明文信息文件删除。
# db_load -T -t hash -f vuser.list vuser.db
# file vuser.db
vuser.db: Berkeley DB (Hash, version 9, native byte-order)
# chmod 600 vuser.db
# rm -f vuser.list
(2)创建 vsftpd 服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户。FTP服务用于存储文件的根目录指的是,当虚拟用户登录后所访问的默认位置。
由于 Linux 系统中的每一个文件都有所有者、所属组属性,例如使用虚拟账户“张三”新建了一个文件, 但是系统中找不到账户 “张三” , 就会导致这个文件的权限出现错误。 为此,需要再创建一个可以映射到虚拟用户的系统本地用户。简单来说,就是让虚拟用户默认登录到与之有映射关系的这个系统本地用户的家目录中,虚拟用户创建的文件的属性也都归属于这个系统本地用户,从而避免 Linux 系统无法处理虚拟用户所创建文件的属性权限。
为了方便管理 FTP 服务器上的数据,可以把这个系统本地用户的家目录设置为/var 目录(该目录用来存放经常发生改变的数据) 。并且为了安全起见,我们将这个系统本地用户设置为不允许登录 FTP 服务器,这不会影响虚拟用户登录,而且还可以避免黑客通过这个系统本地用户进行登录。
# useradd -d /var/ftproot -s /sbin/nologin virtual
# ls -ld /var/ftproot/
drwx------. 3 virtual virtual 74 Aug 6 16:01 /var/ftproot/
# chmod -Rf 755 /var/ftproot/
# ls -id /var/ftproot/
drwxr-xr-x. 3 virtual virtual 74 Aug 6 16:01 /var/ftproot/
(3)建立用于支持虚拟用户的 PAM 文件。
PAM(可插拔认证模块)是一种认证机制,通过一些动态链接库和统一的 API 把系统提供的服务与认证方式分开, 使得系统管理员可以根据需求灵活调整服务程序的不同认证方式。
通俗来讲,PAM 是一组安全机制的模块,系统管理员可以用来轻易地调整服务程序的认证方式, 而不必对应用程序进行任何修改。 PAM 采取了分层设计 (应用程序层、 应用接口层、鉴别模块层)的思想,其结构如图
新建一个用于虚拟用户认证的 PAM 文件 vsftpd.vu,其中 PAM 文件内的“db=”参数为使用 db_load 命令生成的账户密码数据库文件的路径,但不用写数据库文件的后缀:
# vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
(4)在 vsftpd 服务程序的主配置文件中通过 pam_service_name 参数将 PAM 认证文件的名称修改为 vsftpd.vu,PAM 作为应用程序层与鉴别模块层的连接纽带,可以让应用程序根据需求灵活地在自身插入所需的鉴别功能模块。当应用程序需要 PAM 认证时,则需要在应用程序中定义负责认证的 PAM 配置文件,实现所需的认证功能。
例如,在 vsftpd 服务程序的主配置文件中默认就带有参数 pam_service_name=vsftpd,表示登录 FTP 服务器时是根据/etc/pam.d/vsftpd 文件进行安全认证的。现在我们要做的就是把vsftpd 主配置文件中原有的 PAM 认证文件 vsftpd 修改为新建的 vsftpd.vu 文件即可。 该操作中用到的参数以及作用如表。
利用 PAM 文件进行认证时使用的参数以及作用:
anonymous_enable=NO: 禁止匿名开放模式
local_enable=YES : 允许本地用户模式
guest_enable=YES :开启虚拟用户模式
guest_username=virtual: 指定虚拟用户账户
pam_service_name=vsftpd.vu :指定 PAM 文件
allow_writeable_chroot=YES:允许对禁锢的FTP 根目录执行写入操作,而且不拒绝用户的登录请
求
# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
(5)为虚拟用户设置不同的权限。虽然账户 zhangsan 和 lisi 都是用于 vsftpd 服务程序认证的虚拟账户,但是我们依然想对这两人进行区别对待。比如,允许张三上传、创建、修改、查看、删除文件,只允许李四查看文件。这可以通过 vsftpd 服务程序来实现。只需新建一个目录,在里面分别创建两个以 zhangsan 和 lisi 命名的文件,其中在名为 zhangsan 的文件中写入允许的相关权限(使用匿名用户的参数) :
# mkdir /etc/vsftpd/vusers_dir/
# cd /etc/vsftpd/vusers_dir/
# touch lisi
# vim zhangsan
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
然后再次修改 vsftpd 主配置文件,通过添加 user_config_dir 参数来定义这两个虚拟用户不同权限的配置文件所存放的路径。为了让修改后的参数立即生效,需要重启 vsftpd 服务程序并将该服务添加到开机启动项中:
# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/vusers_dir
# systemctl restart vsftpd
# systemctl enable vsftpd
(6)设置 SELinux 域允许策略,然后使用虚拟用户模式登录 FTP 服务器。相信大家可以猜到,SELinux 会继续来捣乱。 所以, 先按照前面实验中的步骤开启 SELinux 域的允许策略,以免再次出现操作失败的情况:
# getsebool -a | grep ftp
# setsebool -P ftpd_full_access=on
此时, 不但可以使用虚拟用户模式成功登录到 FTP 服务器, 还可以分别使用账户 zhangsan和 lisi 来检验他们的权限。
# ftp 192.168.1.145
Connected to 192.168.1.145 (192.168.1.145).
220 (vsFTPd 3.0.2)
Name (192.168.1.145:root): lisi
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir files
550 Permission denied.
ftp> exit
221 Goodbye.
# ftp 192.168.1.145
Connected to 192.168.1.145 (192.168.1.145).
220 (vsFTPd 3.0.2)
Name (192.168.1.145:root): zhangsan
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir files
257 "/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir database
250 Remove directory operation successful.
ftp> exit
221 Goodbye.
三、简单文件传输协议
简单文件传输协议(Trivial File Transfer Protocol,TFTP)是一种基于 UDP 协议在客户端 和服务器之间进行简单文件传输的协议。顾名思义,它提供不复杂、开销不大的文件传输服 务(可将其当作 FTP 协议的简化版本) 。
TFTP 的命令功能不如 FTP 服务强大, 甚至不能遍历目录, 在安全性方面也弱于 FTP服务。而且,由于 TFTP 在传输文件时采用的是 UDP 协议,占用的端口号为 69,因此文件的传输过程也不像 FTP 协议那样可靠。但是,因为 TFTP 不需要客户端的权限认证,也就减少了无谓的系统和网络带宽消耗,因此在传输琐碎(trivial)不大的文件时,效率更高。
# yum install tftp-server tftp
Loaded plugins: langpacks, product-id, subscription-manager
………………省略部分输出信息………………
Installing:
tftp x86_64 5.2-11.el7 rhel 35 k
tftp-server x86_64 5.2-11.el7 rhel 44 k
Installing for dependencies:
xinetd x86_64 2:2.3.15-12.el7 rhel 128 k
Transaction Summary
===============================================================================
Install 2 Packages (+1 Dependent package)
Total download size: 207 k
Installed size: 373 k
Is this ok [y/d/N]: y
Downloading packages:
………………省略部分输出信息………………
Installed:
tftp.x86_64 0:5.2-11.el7 tftp-server.x86_64 0:5.2-11.el7
Dependency Installed:
xinetd.x86_64 2:2.3.15-12.el7
Complete!
在 RHEL 7 系统中,TFTP 服务是使用 xinetd 服务程序来管理的。xinetd 服务可以用来管理多种轻量级的网络服务,而且具有强大的日志功能。简单来说,在安装 TFTP 软件包后,还需要在 xinetd 服务程序中将其开启,把默认的禁用(disable)参数修改为 no:
# vim /etc/xinetd.d/tft
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
然后,重启 xinetd 服务并将它添加到系统的开机启动项中,以确保 TFTP 服务在系统重启后依然处于运行状态。考虑到有些系统的防火墙默认没有允许 UDP 协议的 69 端口,因此需要手动将该端口号加入到防火墙的允许策略中:
# systemctl restart xinetd
# systemctl enable xinetd
# firewall-cmd --permanent --add-port=69/udp
success
# firewall-cmd --reload
success
注意:如何xinetd服务无法启动,则是没有安装上,执行yum install xinetd进行安装。
TFTP 的根目录为/var/lib/tftpboot。我们可以使用刚安装好的 tftp 命令尝试访问其中的文件,亲身体验 TFTP 服务的文件传输过程。在使用 tftp 命令访问文件时,可能会用到下表中的参数。
tftp 命令中可用的参数以及作用:
? 帮助信息
put 上传文件
get 下载文件
verbose 显示详细的处理信息
status 显示当前的状态信息
binary 使用二进制进行传输
ascii 使用 ASCII 码进行传输
timeout 设置重传的超时时间
quit 退出
# echo "i love linux" > /var/lib/tftpboot/readme.txt
# tftp 192.168.10.10
tftp> get readme.txt
tftp> quit
# ls
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures readme.txt Videos
Desktop Downloads Music Public Templates
# cat readme.txt
i love linux
此文章参考刘遄老师所著的《linux就该这么学》,经过逐步调试,并验证后形成的。