1配置
vsftpd-3.0.2-27.el7.x86_64
阿里云 centos 7.0
2 ftp工作模式
2.1 ftp通道
ftp工作会启动两个通道:
控制通道,数据通道
在ftp协议中,控制连接均是由客户端发起的,而数据连接有两种模式:port模式(主动模式)和pasv(被动模式)
2.2 port模式
在客户端需要接收数据时,ftp_client(大于1024的随机端口)----port命令-----ftp_server(21)发送port命令,这个port命令包含了客户端是用什么端口来接收数据(大于1024的随机端口),在传送数据时,ftp_server将通过自己的tcp 20端口和port中包含的端口建立新的连接来传送数据。
2.3 pasv模式
传送数据时,ftp_client---pasv命令---ftp_server(21)发送pasv命令时,ftp_server自动打开一个1024--5000之间的随机端口并且通知ftp_client在这个端口上传送数据,然后客户端向指定的端口发出请求连接,建立一条数据链路进行数据传输。
3 安装vsftp
# rpm -qa vsftpd #检查是否已安装 # yum -y install vsftpd # chkconfig --level 35 vsftpd on #设置开机自启动 # chkconfig --list|grep vsftpd #检查开机是否是自动启动
4 ftp文件说明
# rpm -ql vsftpd /etc/logrotate.d/vsftpd #vsftpd的日志文件 /etc/pam.d/vsftpd #PAM认证文件 /etc/rc.d/init.d/vsftpd #启动脚本 /etc/vsftpd #vsftpd的配置文件存放目录 /etc/vsftpd/ftpusers #禁止使用vsftpd的用户列表文件 /etc/vsftpd/user_list #禁止或允许使用vsftpd的用户列表文件 /etc/vsftpd/vsftpd.conf #ftp的主配置文件 /etc/vsftpd/vsftpd_conf_migrate.sh #vsftpd操作的一些变量和设置 /var/ftp #匿名用户目录 /var/ftp/pub 匿名用户的下载目录
5 配置ftp
5.1 vsftpd.conf文件参数说明
# vim /etc/vsftpd/vsftpd.conf
在编写完之后,想要保存并退出,必须先敲击键盘Esc键从输入模式返回命令模式,然后再输入 :wq!切换到末行模式才能完成保存退出操作,如图
#修改下列参数的值
#禁止匿名登录FTP服务器
anonymous_enable=NO
#允许本地用户登录FTP服务器
local_enable=YES
#监听IPv4 sockets
listen=YES
#在行首添加#注释掉以下参数,关闭监听IPv6 sockets,ipv4和ipv6二者只能开其一
#listen_ipv6=YES
#添加下列参数
#设置本地用户登录后所在目录
local_root=/var/ftp/test
#全部用户被限制在主目录
chroot_local_user=YES
#启用例外用户名单
#chroot_list_enable=YES
#指定例外用户列表文件,列表中用户不被锁定在主目录
chroot_list_file=/etc/vsftpd/chroot_list
#开启被动模式
pasv_enable=YES
allow_writeable_chroot=YES
#本教程中为Linux实例公网IP
pasv_address=<FTP服务器公网IP地址>
#设置被动模式下,建立数据传输可使用的端口范围的最小值
pasv_min_port=<port number>
#设置被动模式下,建立数据传输可使用的端口范围的最大值
pasv_max_port=<port number>
5.2 关闭selinux
# setenforce 0 # sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
6 创建虚拟用户
6.1 创建一个用户
创建用户后修改用户的shell为nologin,让用户不能登录系统,只能使用ftp之内的服务
法一:
# useradd -d /home/ftp/test -g ftp -s /sbin/nologin test # echo 123456|passwd --stdin test #设置test密码为123456
“注:1、echo “新密码”|passwd --stdin 用户名”
2、这里建议密码难度稍大一点,不然很容易被暴力破解
法二:
1、运行以下命令为FTP服务创建一个Linux用户。本示例中,该用户名为ftptest。
# adduser ftptest
2、运行以下命令修改ftptest用户的密码。
# passwd ftptest
3、运行以下命令创建一个供FTP服务使用的文件目录。
# mkdir /var/ftp/test
4、运行以下命令更改/var/ftp/test目录的拥有者为ftptest。
hown -R ftptest:ftptest /var/ftp/test
6.2 将用户test添加到chroot_list中
# touch /etc/vsftpd/chroot_list # echo test >>/etc/vsftpd/chroot_list
“注:目录/etc/vsftpd.chroot_list,加入可以到家目录外的用户,一行一个用户”
6.3 启动vsftp服务
法一:
# service vsftpd start 法二:
# /etc/init.d/vsftpd start listen=YES
若法一错误
激活vsftpd,并设置其运行级别:
# chkconfig --level 35 vsftpd on
# service vsftpd start
Vsftpd服务重启、暂停命令
在使用Vsftp服务是经常需要启动、停止、重启vsftp服务,下面是这几个操作使用的指令:
1、启动Vsftpd服务其命令为: service vsftpd start 或 /etc/init.d/vsftpd start
2、停止Vsftpd服务的命令为:service vsftpd stop 或 /etc/init.d/vsftpd stop
3、重新启动Vsftpd服务的命令为:service vsftpd restart 或 /etc/init.d/vsftpd restart
4、检查Vsftpd服务的运行状态:service vsftpd status
6.4 登陆ftp方式
6.4.1 文件夹登陆
在文件夹路径框输入:ftp:// ip:port 按回车登陆(端口默认21,可以省略)
6.4.2 浏览器登陆
浏览器里输入 输入用户名test和密码123456进行测试
6.4.3 cmd命令行登陆
打开windows cmd窗口输入:ftp ip 按回车输入用户名和密码登陆
6.4.4 第三方客户端登陆
比如xftp客户端登陆
7 其他参数说明
max_client=100 #vsftpd最大支持链接数100个ip
max_per=5 #每个ip能支持的5个链接
local_max_rate=81920 #限制传输速度
listen_address=ip #绑定某个ip到vsftpd,只允许该ip访问
xferlog_file=/var/log/vsftpd.log #日志存放位置
开放FTP端口的方法:
暂时开放 ftp 服务
firewall-cmd --add-service=ftp
永久开放 ftp 服务
firewall-cmd --add-service=ftp --permanent
永久关闭ftp服务
firewall-cmd --remove-service=ftp --permanent
重启防火墙让设定生效
systemctl restart firewalld
firewalld的基本使用--------
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
本文参考:阿里云手册