大家好,又见面了,我是全栈君。
一、简介
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端口获取数据。
*N >1024
* 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 设置被动模式服务器最大端口号
use_localtime=YES 设置FTP使用系统时间
dual_log_enable=YES 当设置为YES时将会同时产生两个日志文件[vsftpd.log\xferlog]
log_ftp_protocol=YES 是否记录所有ftp命令日志
转载于:https://blog.51cto.com/opsdev/1983579
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107924.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...