一.vsftpd简介
vsftpd是 “very secure FTP deamon”的缩写,是一个完全免费,开源的ftp服务器软件。
特点:vsftpd是一款在Linux发行版当中最受推崇的FTP服务器程序,小巧轻快,安全易用,支持虚拟用户,支持带宽限制等功能。
ftp服务的作用是用来进行文件的上传和下载的,多用来进行文件的共享,让员工可以通过浏览器来进行文件的上传和下载。
ftp服务端的搭建:提供服务的是程序,程序可以提供服务,所以要让Linux提供ftp服务的第一步是要在服务端安装ftp的软件,此处使用的是vsftpd软件,此时安装vsftpd的Linux服务器成为了文件服务器,
二.vsftpd安装
1.安装vsftpd
1.在安装前需提前确认是否已经安装了vsftpd
rpm -qa|grep vsftpd
2.如果已经安装可以使用以下的命令进行卸载
a. yum remove vsftpd
b. 删除vsftpd配置文件
cd /etc/vsftpd
yum remove vsftpd* -y
rm -rf /etc/vsftpd
3.安装
执行 yum -y install vsftpd
#默认的配置文件路径为: /etc/vsftpd/vsftpd.conf
4.查看安装目录(有说明安装成功)
rpm -qa|grep vsftpd
vsftpd卸载
2.开启vsftpd服务
1.开启ftp服务(centos7)
systemctl start vsftpd.service
2.查看vsftpd服务对应的默认端口
netstat -nltp|grep vsftpd
3.查看是否设置了开机自启:systemctl list-unit-files | grep vsftpd
如果显示以下内容说明已经完成设置
vsftpd.service enabled
4.设置开机自启
systemctl enable vsftpd.service
image.png
3.使用匿名用户登陆vsftpd
此时由于还没有创建用户,所以只有匿名用户可以登陆(默认匿名用户可以登陆),匿名用户登陆的登陆目录默认是/var/ftp/,当使用匿名用户登陆时就可以看到这个目录下的文件。
以下是各种PC的时候登陆ftp的方式
客户端是mac:有bug可以登录但是看不到内容,要使用ftp客户端才可以
客户端是windows:浏览器、资源管理器输入 ftp:// ip
客户端是Linux/mac访问Linux主机上的ftp服务器: 在终端输入 ftp:// ftp服务器ip
Linux/mac自带的ftp客户端使用匿名用户登陆ftp服务器
此时ftp代表匿名用户,由于匿名用户没有密码,所以直接enter即可。一般匿名用户是不让登陆的。
4.使用本地用户登陆vsftpd
在默认情况下,vsftpd是支持地用户(/etc/passwd)访问的,要让本地用户访问,第一步当然是创建本地用户,重置密码
创建用户重置密码
用户创建以后,要限制该用户仅能通过 FTP 访问:
限制用户 ftpuser 只能通过 FTP 访问服务器,而不能直接登录服务器,因为那样会有安全隐患,限制命令如下:
usermod -s /sbin/nologin imageftp
第二步就是指定本地用户的登陆目录,即在配置文件/etc/vsftpd/vsftpd.conf当中修改local_root=/ftpfile/imageftp配置,此时当本地用户登录后的目录即为/ftpfile/imageftp这个目录,当然这个目录要先存在,提前创建这个目录即可。
注意要设置访问这个目录的权限
chmod 777 -R /ftpfile/imageftp
本地用户登陆后,登陆目录为/ftpfile/imageftp
此时用户登陆了,但是还可以切换到其他上级目录当中,这是很不安全的,所以第三步就是配置chroot_local_user=YES(禁锢本地用户的登陆目录),此时等用户登陆以后,他的根目录就是ftpfile/imageftp
本地用户登陆后根目录为/(linux系统当中的/ftpfile/imageftp)
注意:当限制用户只能从浏览器登陆当时候,可能会出现登陆失败530 Login incorrect.Login failed.错误,此时参考:https://www.cnblogs.com/HeiDi-BoKe/p/12035235.html
useradd ftpmall
echo "ftpmall" | passwd ftpmall --stdin
usermod -s /sbin/nologin ftpmall
echo "Welcome to use FTP service." > /ftpfile/mmall/welcome.txt
chmod 777 -R /ftpfile/mmall
三.vsftpd主要文件讲解
查看软件所带来的文件列表:rpm -ql vsftpd
/etc/vsftpd ftp服务主目录
/etc/vsftpd/vsftpd.conf 主配置文件
/var/ftp 匿名用户的默认数据目录(即匿名用户若可以访问,则看到的是这个目录下的文件)
image.png
四.vsftpd配置文件讲解
1.ftp配置
local_root=/ftpfile #本地用户的登陆目录
anno_root=/ftpfile #匿名用户的登陆目录
use_localtime=yes #使用本地的时间
chroot_local_user=YES #禁锢本地用户的登陆目录,本地用户登录后不能向上切换了
anonymous_enable=NO #不允许匿名访问(注意匿名用户是没有密码就可以登陆,如果匿名用户重置密码后会变成费匿名用户)
pasv_min_port=61001 #被动传输接口设置
pasv_max_port=62000 #如果不加这个端口范围的话,会采用一个默认的端口范围,这样也是ok的,但是我们的防火墙就设置的不是太严格,由于是在线上所以还是设置的严格一点好,所以我们一般要加上。
#匿名用户默认只有下载权限,没有上传和新建的权限,本地用户默认有上传下载权限
#在ftp当中修改文件后,立马可以在浏览器当中看到,不用重启vsftp服务
配置文件详解
2.ftp的工作方式
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
一、PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。
当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了端口,你过来连接我”。于是服务器从20端口向客户端的端口发送连接请求,建立一条数据链路来传送数据
二、PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。
当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了端口,你过来连接我。于是客户端向服务器的**口发送连接请求,建立一条数据链路来传送数据
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。
五.ftp常用命令
sudo service vsftpd restart #centos6
systemctl restart/start vsftpd.service #centos7,#启动vsftpd服务,启动以后不会有任何的输出
网友评论