FTP协议的学习与Linux下FTP服务器的搭建

FTP是一种文件传输协议,使用两个TCP连接——控制连接和数据连接。工作模式包括主动和被动,传输方式有ASCII和二进制。在Linux系统中,可以通过安装vsftpd服务来启用FTP,并通过配置/etc/vsftpd.conf文件进行管理。此外,文章还提到了FTP客户端的常用命令。
摘要由CSDN通过智能技术生成

FTP协议和服务

FTP(File Transfer Protocol),是一种从一个主机向另一个主机传送文件的协议。

FTP是双端口服务器

FTP协议使用两个并行的TCP连接来传送文件,一个是控制连接,一个是数据连接。

  • 控制连接,用于在客户端和服务器之间传送控制信息,例如用户名,密码,改变目录上传或下载文件的命令。端口为21.
  • 数据连接,用户收发数据的连接。端口为20.

FTP协议的工作模式

FTP协议的工作模式分为主动模式和被动模式,二者的主要区别在于对数据端口的处理方式不同:主动模式在客户端连接后,告诉服务器数据连接的端口;被动模式在客户端连接后,进行数据传输的时候临时连接FTP服务器的20端口,利用此端口进行数据的传输。

FTP协议的传输方式

FTP协议有两种传输方式:ASCII传输模式和二进制数据传输模式,二者的区别在于对传输数据是否进行了解释。

ASCII传输方式

当文件传输是FTP通常会自动地调整文件的内容便于把文件解释成另外那台计算机存储文本文件的格式。但是如果是二进制程序,则需要同二进制传输模式,用binary命令告诉FTP逐字复制。

二进制传输模式

在二进制传输中, 数据中保存文件的位序,这样原始的数据和复制的数据是逐位一一对应的

Linux下开启ftp服务

安装vsftpd服务

sudo apt-get install vsftpd			// 安装ftp服务
systemctl start vsftpd.service		// 启动ftp服务
systemctl status vsftpd.service		// 查看服务状态

/etc/vsftpd.conf配置文件介绍

listen=[YES|NO]  					// 是否以独立运行的方式监听服务
listen_ipv6=[YES|NO]				// 是否运行允许监听IPv6套接字
anonymous_enable=[YES|NO]  			// 是否允许匿名用户访问
local_enable=[YES|NO]  				// 是否允许本地用户登录 FTP
write_enable=[YES|NO]				// 是否允许对目录或文件可写
local_umask=022  					// 本地用户上传文件的 umask 值
anon_upload_enable=[YES|NO]  		// 是否允许匿名用户上传文件
anon_mkdir_write_enable=[YES|NO] 	// 是否允许匿名用户创建目录
dirmessage_enable=[YES|NO]			// 是否激活目录消息,当远程用户进入某个目录时是否给他们的消息
use_localtime=[YES|NO]				// 是否显示显示带有本地时区时间的目录清单
download_enable=[YES|NO]  			// 是否允许下载文件
xferlog_enable=[YES|NO]				// 激活上传/下载日志记录
connect_from_port_20=[YES|NO]		// 是否确保端口传输连接来自端口20 (ftp-data)。

// 是否使上传的匿名文件由不同的用户拥有
chown_uploads=[YES|NO]
chown_username=whoever

xferlog_file=/var/log/vsftpd.log	// 日志文件的位置,默认为/var/log/vsftpd.log
xferlog_std_format=[YES|NO]			// 是否将将日志文件设置为标准ftpd xferlog格式

idle_session_timeout=600			// 设置空闲会话超时的时间
data_connection_timeout=120			// 设置数据连接超时的时间
nopriv_user=ftpsecure				// 系统上定义一个唯一的用户,ftp服务器可以使用该用户作为完全隔离和无特权的用户

ascii_upload_enable=[YES|NO]		// 是否允许以ASCII模式上传文件
ascii_download_enable=[YES|NO]		// 是否允许以ASCII模式下载文件

ftpd_banner=Welcome to blah FTP service.			// 定义登录横幅标语
chroot_local_user=[YES|NO]  		// 是否将用户权限禁锢在 FTP 目录,以确保安全

// 设置用户列表为“允许”还是“禁止”操作
userlist_enable=[YES|NO]
userlist_deny=[YES|NO]

listen_address=IP 地址  			// 设置要监听的 IP 地址
listen_port=21  					// 设置 FTP 服务的监听端口

max_clients=0  						// 最大客户端连接数,0 为不限制
max_per_ip=0  						// 同一 IP 地址的最大连接数,0 为不限制

anon_umask=022  					// 匿名用户上传文件的 umask 值
anon_root=/var/ftp  				// 匿名用户的 FTP 根目录
anon_other_write_enable=[YES|NO]	// 是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限)
anon_max_rate=0  					// 匿名用户的最大传输速率(字节/秒),0 为不限制

local_root=/var/ftp  				// 本地用户的 FTP 根目录
local_max_rate=0  					// 本地用户最大传输速率(字节/秒),0 为不限制

utf8_filesystem=[YES|NO]			// 是否使用utf8格式文件系统

ftp命令

Linux ftp命令设置文件系统相关功能。

参数

参数含义
-d详细显示指令执行过程,便于排错或分析程序执行的情形
-i关闭互动模式,不询问任何问题
-g关闭本地主机文件名称支持特殊字符的扩充特性。
-n不使用自动登录
-v显示指令执行过程

实例

ftp 192.168.220.138     // 连接IP地址为192.168.220.138的服务器

客户端命令

命令含义
!执行本地命令
?显示FTP命令的说明
append向远程服务器追加本地文件
ascii设置文件传输类型为ASCII,默认类型
bell每一个传输命令完成触发一次响铃(默认关闭)
binary设置文件传输类型为binary(二进制传输)
bye结束FTP会话并退出
cd改变远程工作目录
close结束FTP会话并返回命令行
debug关闭调试(默认关闭)
delete删除远程单个文件
dir显示服务器目录和文件列表
disconnect从远程断开,重新获得FTP提示框
ls显示服务器目录和文件列表
cd进入服务器指定的目录
lcd进入本地客户端指定的目录
get复制单个远程文件到本地
glob开关文件名通配符(默认NO)
hash为每个缓冲区传输切换打印“#”(哈希标记打印),默认关闭
help显示FTP命令的说明
mdelete删除远程一个或多个文件
mdir列出多个远程目录的内容
mget复制一个或多个远程文件至本地
mkdir创建一个远程目录
mls列出多个远程目录的内容
mput复制一个或多个本地文件到远程
open连接到指定的FTP服务器
prompt开关交互提示(默认为ON)
put复制一个本地文件到远程
pwd显示远程当前工作目录
quit结束FTP会话并退出FTP
recv复制远程文件到本地
rename重命名远程文件
rmdir删除远程目录
send复制一个本地文件到远程
status显示当前FTP连接状态
trace开关数据包追踪(默认为OFF)
type设置文件传输类型(默认为ASCII)
user发送新用户信息
verbose开关详细模式
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值