FTP服务概述
- 控制连接:TCP 21,用于发送FTP命令信息
- 数据连接:TCP 20,用于上传、下载数据
- 数据连接的建立类型:
主动模式:服务端从20端口主动向客户端发起连接
被动模式:服务端在指定范围内某个端口被动等待客户端连接
FTP传输模式
文本模式:ASCII模式,以文本序列传输数据
二进制模式:Binary模式,以二进制序列传输数据
常见的FTP客户端程序
ftp命令
CuteFTP、FlashFXP、LeapFTP、Filezilla
gftp、kuftp
vsftpd服务基础
vsftpd软件包:vsftpd-3.0.2-22.el7.x86_64.rpm
安装vsftpd: rpm ivh 软件包名(要先找到该包位置)
Vsftpd服务资料
官方站点:http://vsftpd.beasts.org/
主程序:/usr/sbin/vsftpd
服务名:vsftpd
用户控制列表文件
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
主配置文件
/etc/vsftpd/vsftpd.conf
安装vsftpd
常用的全局配置项
listen=YES:是否以独立运行的方式监听服务
listen_address=192.168.4.1:设置监听的IP地址
listen_port=21:设置监听FTP服务的端口号
write_enable=YES:是否启用写入权限
download_enable=YES:是否允许下载文件
userlist_enable=YES:是否启用user_list列表文件
userlist_deny=YES:是否禁用user_list中的用户
max_clients=0:限制并发客户端连接数
max_per_ip=0:限制同一IP地址的并发连接数
常用的匿名FTP配置项
anonymous_enable=YES:启用匿名访问
anon_umask=022:匿名用户所上传文件的权限掩码
anon_root=/var/ftp:匿名用户的FTP根目录
anon_upload_enable=YES:允许上传文件
anon_mkdir_write_enable=YES:允许创建目录
anon_other_write_enable=YES:开放其他写入权
anon_max_rate=0:限制最大传输速率(字节/秒)
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
......
anonymous_enable=YES
anon_umask=022
anon_root=/var/ftp
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_max_rate=0
常用的本地用户FTP配置项
local_enable=YES:是否启用本地系统用户
local_umask=022:本地用户所上传文件的权限掩码
local_root=/var/ftp:设置本地用户的FTP根目录
chroot_local_user=YES:是否将用户禁锢在主目录
local_max_rate=0:限制最大传输速率(字节/秒)
构建可匿名上传的FTP服务器
使匿名用户FTP对该目录有写入权限
[root@localhost ~]# chown ftp /var/ftp/pub/
[root@localhost ~]# ls -ld /var/ftp/pub/
drwxr-xr-x 4 ftp root 4096 02-24 10:36 /var/ftp/pub/
[root@localhost vsftpd]# service vsftpd start
//为 vsftpd 启动 vsftpd: [确定]
[root@localhost vsftpd]# netstat -anpt | grep "vsftpd"
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 8989/vsftpd
[root@localhost]# vi /etc/vsftpd/vsftpd.conf
......
anonymous_enable=YES
local_enable=NO
write_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
write_enable=YES //开放服务器写权限
[root@localhost ~]# service vsftpd restart //重启服务
Redirecting to /bin/systemctl restart vsftpd.service
访问ftp
1.设置firewalld放行ftp或关闭firewalld
[root@localhost ~]# systemctl stop firewalld
2.设置SElinux放行ftp或关闭SElinux
3.在地址栏输入ftp://ip,确认可以打开文件夹。
构建本地用户验证的FTP服务器
启用本地用户访问
结合user_list文件灵活控制用户访问
重新加载vsftpd配置
启用user_list用户列表
[root@localhost ~]# useradd lisi
[root@localhost ~]# passwd lisi
Changing password for user lisi.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
//添加普通测试用户lisi
[root@localhost ~]# vi /etc/vsftpd/user_list
......
laya
vanko
hunter
lisi
[root@localhost]# vi /etc/vsftpd/vsftpd.conf
……
userlist_enable=YES
userlist_deny=NO
[root@localhost]# service vsftpd reload
再次访问ftp
vsftpd服务的其他常用配置
修改vsftpd服务的监听地址、端口
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
……
listen=YES
listen_address=192.168.4.11
listen_port=2121 //设置监听端口
允许使用FTP服务器的被动模式
[root@localhost]# vi /etc/vsftpd/vsftpd.conf
……
pasv_enable=YES
pasv_min_port=24500
pasv_max_port=24600
//启用被动模式
限制FTP连接的并发数、传输速率
[root@localhost]# vi /etc/vsftpd/vsftpd.conf
max_clients=20
max_per_ip=2
anan_max_rate=50000
local_max_rate=200000
\\单位是kB/s