使用vsftpd服务传输文件

一、文件传输协议

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

mail

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

mail

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 的分层设计结构

新建一个用于虚拟用户认证的 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就该这么学》,经过逐步调试,并验证后形成的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • ftp 文件传输协议 跨平台 上传下载文件 vsftpd 工具:非常安全的文件传输协议;默认的命令端口21号,数据...
    柒夏锦阅读 3,994评论 1 9
  • FTP服务概述 简单FTP构建及访问 VSFTP服务基础 用户禁锢、黑白名单 FTP并发及带宽限制 一、FTP服务...
    紫_轩阅读 7,561评论 3 25
  • 1.FTP简介 File Transfer Protocol 早期的三个应用级协议之一 基于C/S结构 双通道...
    尛尛大尹阅读 2,385评论 0 0
  • 前几天,和几位朋友聚会聊天,聊着聊着有位哥们就开始诉苦了,说自己很委屈。 受什么委屈了呢? 他说,起因是老婆把热水...
    吴在天阅读 417评论 3 9
  • 彩云之南,黄河之北, 我们的足迹追随你的方向, 不离不弃,传播希望, 我们努力追逐太阳的光亮。 啊!航天云,同一片...
    善默素听阅读 223评论 0 0