一、FTP原理简述
1.传输方式:ascii传输模式和二进制数据传输模式。
2.双通道协议:命令和数据连接
3.ftp支持的两种模式:相对于ftp服务端来说,分为主动(Active)模式和被动(PASV)模式。
主动模式:服务器主动连接
命令(控制):客户端:随机port —> 服务器:21/tcp
数据:客户端:随机port <—服务器:20/tcp
被动模式:客户端主动连接
命令(控制):客户端:随机port —> 服务器:21/tcp
数据:客户端:随机port —> 服务器:随机port /tcp
如图所示:
二、vsftpd服务常见配置/etc/vsftpd/vsftpd.conf
#1.命令端口
listen_port=2121 #默认值为21
#2.主动模式端口
connect_from_port_20=YES #主动模式端口为20
ftp_data_port=20 #(默认)指定主动模式的端口
#3.被动模式端口范围
pasv_min_port=5000 #0为随机分配,端口范围会影响客户端的并发数
pasv_max_port=5010
#4.使用当地时间(默认为NO,使用GMT)
use_localtime=YES
#5.匿名用户登录
anonymous_enable=NO #支持匿名用户,CentOS8默认不允许匿名
no_anon_password=YES #匿名用户略过口令检查 , 默认NO
#6.匿名用户上传
anon_upload_enable=YES #匿名上传,注意:文件系统权限
anon_mkdir_write_enable=YES #匿名建目录
#/var/ftp/pub赋权限 setfacl -m u:ftp:rwx /var/ftp/pub
anon_world_readable_only=NO #只能下载全部读的文件, 默认YES
anon_umask=0333 #指定匿名上传文件的umask,默认077,注意:0333中的0不能省略
anon_other_write_enable=YES #可删除和修改上传的文件,默认NO
#7.指定匿名用户的上传文件的默认的所有者和权限
chown_uploads=YES #默认NO
chown_username=ammon
chown_upload_mode=0644
#8.Linux系统用户
local_enable=YES #是否允许linux用户登录
write_enable=YES #允许linux用户上传文件
local_umask=022 #指定系统用户上传文件的默认权限对应umask
#9.将所有系统用户映射为指定的guest用户
guest_enable=YES #所有系统用户都映射成guest用户
guest_username=ftp #配合上面选项才生效,指定guest用户
local_root=/ftproot #指定guest用户登录所在目录,但不影响匿名用户的登录目录
user_config_dir=/etc/vsftpd/conf.d/ #每个用户独立的配置文件目录
#10.禁锢系统用户
chroot_local_user=YES #禁锢系统用户,默认NO,即不禁锢
#11.日志
xferlog_enable=YES #启用记录上传下载日志,此为默认值
xferlog_std_format=YES #使用wu-ftp日志格式,此为默认值
xferlog_file=/var/log/xferlog #可自动生成, 此为默认值
#12. 提示信息
#登录前提示信息
ftpd_banner="welcome to mage ftp server"
banner_file=/etc/vsftpd/ftpbanner.txt
#目录访问提示信息
dirmessage_enable=YES #此为默认值
message_file=.message #信息存放在指定目录下.message ,此为默认值,只支持单行说明
#13.PAM模块实现用户访问控制
pam_service_name=vsftpd
#pam配置文件:/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers #默认文件中用户拒绝登录,默认是黑名单,但也可以是白名单
#14.是否启用控制用户登录的列表文件
userlist_enable=YES #此为默认值
userlist_deny=YES #(默认值) 黑名单,不提示口令,NO为白名单
userlist_file=/etc/vsftpd/user_list #此为默认值
#15.连接数限制
max_clients=0 #最大并发连接数
max_per_ip=0 #每个IP同时发起的最大连接数
#16.传输速率,单位:字节/秒
anon_max_rate=0 #匿名用户的最大传输速率,以字节为单位,比如:1024000表示1MB/s
local_max_rate=0 #本地用户的最大传输速率
#17.连接时间:秒为单位
connect_timeout=60 #主动模式数据连接超时时长
accept_timeout=60 #被动模式数据连接超时时长
data_connection_timeout=300 #数据连接无数据输超时时长
idle_session_timeout=60 #无命令操作超时时长
#18.以文本方式传输
ascii_upload_enable=YES
ascii_download_enable=YES
在学习中进步,如有错误,请多多批评指正