File Transfer Protocol, FTP(RFC 959) 是 TCP/IP 协议组中的协议之一,其传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
FTP 会话包含控制通道和数据通道:
FTP 服务器登录通常有三种不同的身份,分别是: 1) 实体账号 real user;2) 访客 guest;3) 匿名用户 anonymous。
通常实体帐号拥有较多权限,而匿名用户通常只有上传下载功能。
在 Linux 中使用比较多的是 vsftp 服务器,其全称为 Very Secure FTP ,如下的配置就是针对 vsftp 。
可以通过如下步骤安装 FTP 服务器。
----- 安装服务器以及客户端
# yum install vsftpd ftp
----- 启动服务器
# systemctl start vsftpd
----- 使用客户端
$ ftp hostname
ftp> open 127.1 # 打开链接,需要用户登陆
ftp> user name [password] # 登陆
ftp> pwd # 查看当前目录,一般默认是$HOME
ftp> ls # 查看目录以及文件
ftp> cd /some/dir # 切换目录
ftp> lcd /some/dir # 切换本地目录
ftp> get /some/file # 下载文件
ftp> mget *.txt # 同时下载多个文件
ftp> put file # 上传文件
ftp> mput *.txt
也可以使用 anonymous
以及空密码登陆。
FTP 在建立链接时需要两个通道,分别为命令通道和数据通道,命令通道通常为 21 号端口,数据通道通常为 22 号端口。FTP 在建立链接时分为主动和被动链接,注意所谓主动被动是在建立数据通道时对于服务器而言。
FTP 默认是主动链接,链接过程如下。
常见的配置文件如下:
man 5 vsftpd.conf
查看详细配置。也就是配置文件 /etc/vsftpd/vsftpd.conf
中的内容。
listen=NO # 不以StandAlone方式启动
write_enable=YES # 允许用户上传文件
anonymous_enable=YES # 是否允许匿名(anonymous/ftp)登陆,默认密码为空
anon_upload_enable=YES # 允许匿名用户上传文件
dirmessage_enable=YES # 切换目录时显示目录
ftpd_banner=Welcome to FTP service. # 显示登陆欢迎信息
所谓的 StandAlone 模式,就是该服务拥有自己的守护进程支持,可以看到该进程存在;否则是由超级守护进程负责代理,老版本采用的是 Xinetd 负责,新版本则采用 systemd 。
FTP 每个命令都有 3 到 4 个字母组成,命令后面跟参数,用空格分开,每个命令都以 \r\n
结束,这里以下载文件为例,简单介绍其使用的流程。
要下载或上传一个文件,首先要登入 FTP 服务器,然后发送命令,最后退出,这个过程中使用到的命令如下:
USER 指定用户名,通常是控制连接后第一个发出的命令。
PASS 指定用户密码,该命令紧跟 USER 命令后。
SIZE 从服务器上返回指定文件的大小,。“SIZE file.txt\r\n”:如果 file.txt 文件存在,则返回该文件的大小。
CWD: 改变工作目录。如:“CWD dirname\r\n”。
PASV: 让服务器在数据端口监听,进入被动模式。如:“PASV\r\n”。
PORT: 告诉 FTP 服务器客户端监听的端口号,让 FTP 服务器采用主动模式连接客户端。如:“PORT h1,h2,h3,h4,p1,p2”。
RETR: 下载文件。“RETR file.txt \r\n”:下载文件 file.txt。
STOR: 上传文件。“STOR file.txt\r\n”:上传文件 file.txt。
REST: 该命令并不传送文件,而是略过指定点后的数据。此命令后应该跟其它要求文件传输的 FTP 命令。“REST 100\r\n”:重新指定文件传送的偏移量为 100 字节。
QUIT: 关闭与服务器的连接。
如果喜欢这里的文章,而且又不差钱的话,欢迎打赏个早餐 ^_^
This Site was built by Jin Yang, generated with Jekyll, and hosted on GitHub Pages
©2013-2018 – Jin Yang