FTP入门和进阶

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FTP入门和进阶相关的知识,希望对你有一定的参考价值。


一、简介

1、FTP 是什么

FTP "File Transfer Protocol"(文件传输协议) 用来实现文件的传输及共享,在RFC 959有说明。

ftp 工作在应用层,基于tcp,是C/S 架构。


2、会话连接:

控制连接:端口为21, 和FTP服务器沟通,连接FTP,发送指令[ 客户端不断开,持久保持连接]

数据连接:端口为20[ 只有在主动模式下是20 ], 和FTP服务器进行文件传输[ 有数据请求时连接]


3、工作模式

FTP协议中,控制连接均由客户端发起,而数据连接有两种工作方式:PORT方式和PASV方式


主动、被动 是基于服务器的角度


PORT【Active 】模式(主动方式)

    FTP客户端使用随机端口N(1024以上)连接到FTP服务器的21端口,发送用户名和密码登录。登录成功后要list列表或者读取数据时,客户端发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口N+1;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口N+1连接,发送数据。


PASV【Passive】模式(被动方式) - 推荐使用

    FTP客户端使用随机端口N(1024以上)连接到FTP服务器的21端口,发送用户名和密码登录。登录成功后要list列表或者读取数据时,客户端发送 PASV命令到FTP服务器,告诉服务器客户端采用被动模式,FTP服务器收到PASV被动模式命令后,打开一个随机端口,并通知客户端,我已经打开N端口,可以进行连接,客户端连接到服务器的N端口获取数据。


* ftp 防火墙的配置(生产环境中的C/S端均需设置)


4、数据传输模式:(服务器自动)

文本

二进制


二、服务端程序:

windows: serv-U、FileZilla

linux: vsftpd "Very Secure FTP Daemon", 是一个UNIX类操作系统上运行的服务器的名字

支持三种用户:匿名用户(默认),系统用户,虚拟用户

基于PAM实现用户认证

/etc/pam.d/*
/lib64/security/*

安装Vsftpd并配置

yum install vsftpd -y
service vsftp start
chkconfig vsftpd on

生成的安装文件

/etc/vsftpd/vsftp.conf: 配置文件
/etc/init.d/vsftpd:   服务脚本
/usr/sbin/vsftpd:    主程序
/etc/vsftpd/ftpusers:黑名单, 不受任何配置项的影响,它总是有效
/etc/vsftpd/user_list:由配置文件中userlist_enable和userlist_deny决定是白名单还是黑名单
/var/log/xferlog:默认日志文件

配置文件解析

listen=YES              定义ftp为独立守护进程
listen_port=21  设置FTP服务的端口号
#anonymous_enable=YES    是否允许匿名用户登录(anonymous/ftp)
local_enable=YES        是否允许本地用户登录
write_enable=YES        是否允许本地用户写入
local_umask=022 本地用户上传文件的默认权限掩码值
local_root=/var/ftp     设置本地用户的FPT根目录(缺省为用户的宿主目录)
local_max_rate  限制本地用户的最大传输速率(0为无限制),单位为字节
download_enable=YES     是否允许下载文件(仅限于浏览、上传的FTP服务器可将其设为NO)
#anon_upload_enable=YES  是否允许匿名用户上传文件
#anon_mkdir_write_enable=YES     是否允许匿名用户创建目录
#anon_other_write_enable=YES     是否允许匿名用户有其他写入权限,如改名、覆盖、删除
#anon_root=/var/ftp      匿名用户根目录(缺省/var/ftp)
#anon_umask=022  匿名用户上传文件的默认权限掩码值
#anon_world_readable_only=NO     允许匿名用户浏览文件的权限
#anon_max_rate=0 匿名用户的最大传输速率(0为无限制),单位为字节
dirmessage_enable=YES   是否显示目录说明文件,默认是YES但需要手工创建.message文件
xferlog_enable=YES      是否记录ftp传输过程,即启用FTP日志,默认/var/log/xferlog
xferlog_std_format=YES  启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自已的日志格式
connect_from_port_20=YES  主动模式数据传输使用20端口
#chown_upload=YES        是否改变上传文件的属主
#chown_username=username 将属主改为那个用户
#idle_session_timeout=600        设置控制连接超时时间
#data_connection_timeout=120     设置数据传输超时时间
#accept_timeout=60       设置客户端超时时间
#chroot_list_enable=YES  使用文件将特定用户锁定在家目录
#chroot_list_file=/etc/vsftpd.chroot_list        用户列表文件
#以上两项可用下面这个配置代替
chroot_local_user=yes   是否将FTP本地用户禁锢在宿主目录中
pam_service_name=vsftpd 设置用于用户认证的PAM文件位置
userlist_enable=YES     是否启用user_list用户列表文件
userlist_deny=YES       是否禁止user_list列表文件中的用户账号,启用后这个文件内的用户不能登录ftp
tcp_wrappers=YES        是否启用tcp_wrappers访问控制
max_clients=0   最多允许多少个客户端同进连接FTP服务器(0为无限制)
max_per_ip=0    对来自相同IP地址的客户端,最多允许多少个并发连接(0为无限制)
pasv_enable=YES 打开被动模式连接
pasv_min_port=10000     设置被动模式服务器最小端口号
pasv_max_port=11000     设置被动模式服务器最大端口号


以上是关于FTP入门和进阶的主要内容,如果未能解决你的问题,请参考以下文章

Atom编辑器入门到精通 Atom使用进阶

Atom编辑器入门到精通 Atom使用进阶

Atom编辑器入门到精通 Atom使用进阶

算法竞赛入门码蹄集进阶塔335题(MT3330-3335)

java Ftp上传创建多层文件的代码片段

Kotlin基础从入门到进阶系列讲解(基础篇)Fragment的基本使用