网络文件共享之vsftp
文件传输协议FTP
一、概述
文件传输协议:File Transfer Protocol
架构:C/S
服务端口:21/tcp 20/tcp
双通道协议:命令连接和数据连接
数据传输格式:二进制(默认)和文本
两种模式:从服务器角度
主动模式(PORT STYLE):服务器主动发起数据连接
命令连接(控制):client:随机高位port ----> ftpserver:21/tcp
数据连接:ftpserver:20/tcp ----> client:随机高位port
被动模式(PASSIVE STYLE):客户端主动发起数据连接
命令连接(控制):client:随机高位port ----> ftpserver:21/tcp
数据连接:client:随机高位port ----> ftpserver:随机高位port/tcp
【随机port通过命令连接通信协商】
【1024以上端口为高位端口,1024以下端口或已分配或是预留备用】
【两种模式中,每次传输文件,随机数据port都会变化】
【linux 客户端默认使用被动模式;windows 客户端默认使用主动模式】
服务器被动模式数据端口:
227 Entering Passive Mode (10,0,0,121,213,211)
服务器数据端口:213*256+211
FTP状态码:
1xx:信息
2xx:成功类状态
3xx:补充类
4xx:客户端错误
5xx:服务端错误
用户认证方式:
匿名用户:ftp,anonymous,对应Linux用户ftp
系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow
虚拟用户:特定服务的专用用户,独立的用户/密码文件
用户和其共享目录
匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp
系统用户共享文件位置:用户家目录
虚拟用户共享文件位置:为其映射的系统用户的家目录
二、VSFTP服务实现
2.1、vsftpd简单说明
vsftpd服务由 vsftpd 包提供(centos7),不再由xinetd管理(centos6)
用户认证配置文件:/etc/pam.d/vsftpd
启动服务相关文件:
/usr/lib/systemd/system/vsftpd.service (centos7)
/etc/rc.d/init.d/vsftpd (centos6)
配置文件:
/etc/vsftpd/vsftpd.conf
帮助:man 5 vsftpd.conf
格式:option=value
注意:= 前后不要有空格
2.2、vsftpd常用配置
2.2.1、命令连接端口
根据此选项修改命令连接服务端口
listen_port=21
示例:更改命令连接端口为2121
1 [root@vsftp-121 ~]# vim /etc/vsftpd/vsftpd.conf 2 listen_port=2121 3 [root@vsftp-121 ~]# systemctl restart vsftpd 4 #/验证-默认21端口,访问失败/ 5 [root@client-108 ~]# ftp 10.0.0.121 6 ftp: connect: Connection refused 7 ftp> bye 8 #/验证-指定ftp命令连接端口2121,匿名访问成功/ 9 [root@client ~]# ftp 10.0.0.121 2121 10 Connected to 10.0.0.121 (10.0.0.121). 11 220 (vsFTPd 3.0.2) 12 Name (10.0.0.121:root): ftp 13 331 Please specify the password. 14 Password: 15 230 Login successful. 16 Remote system type is UNIX. 17 Using binary mode to transfer files. 18 ftp> ls 19 227 Entering Passive Mode (10,0,0,121,164,86). 20 150 Here comes the directory listing. 21 drwxr-xr-x 2 0 0 6 Oct 30 2018 pub
2.2.2、主动模式端口
connect_from_port_20=YES 主动模式端口为20
ftp_data_port=20 (默认) 指定主动模式的端口
示例:更改服务端数据连接端口为2020
[root@vsftp-121 ~]# vim /etc/vsftpd/vsftpd.conf connect_from_port_20=YES #默认 ftp_data_port=2020 #新加 [root@vsftp-121 ~]# systemctl restart vsftpd #/client访问vsftpd,passive切换为主动模式/ [root@client-108 data]# ftp 10.0.0.121 Connected to 10.0.0.121 (10.0.0.121). 220 (vsFTPd 3.0.2) Name (10.0.0.121:root): ftp 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> passive #切换主被动模式passive Passive mode off. ftp> get f1 local: f1 remote: f1 #/验证服务端数据连接端口为:2020/ [root@vsftp-121 ~]# ss -nt State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 10.0.0.121:22 10.0.0.1:56408 ESTAB 0 3192840 ::ffff:10.0.0.121:2020 ::ffff:10.0.0.108:38956 ESTAB 0 0 ::ffff:10.0.0.121:21 ::ffff:10.0.0.108:38564
2.2.3、被动模式端口范围
pasv_min_port=6000 #0为随机分配
pasv_max_port=6010 #分配端口范围太少,多用户登录会报错
示例:调整被动模式端口范围
[root@vsftp-121 ~]# vim /etc/vsftpd/vsftpd.conf pasv_min_port=6000 pasv_max_port=6010 [root@vsftp-121 ~]# systemctl restart vsftpd [root@client data]# ftp 10.0.0.121 Connected to 10.0.0.121 (10.0.0.121). 220 (vsFTPd 3.0.2) Name (10.0.0.121:root): ftp 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> get f1 local: f1 remote: f1 ... #/验证服务端数据连接端口是否在定义范围/ [root@vsftp ftp]# ss -nt State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 10.0.0.121:22 10.0.0.1:50644 ESTAB 0 0 ::ffff:10.0.0.121:21 ::ffff:10.0.0.108:38566 ESTAB 0 3583800 ::ffff:10.0.0.121:6006 ::ffff:10.0.0.108:44371
浙公网安备 33010602011771号