FTP是用于在网络上进行文件传输的一套标准协议。
FTP服务器是使用FTP协议在网络上提供文件存储和访问的服务器。
FTP服务器的工作模式主要有两种:
1.主动模式:服务器主动连接用户端口发送数据。(端口可能被客户端防火墙堵塞)
2.被动模式:客户端连接服务器端口发送数据。(端口可能被服务器端防火墙堵塞)
安装vsftpd
vsftdp
是一个用于 类Unix系统的安全且快速的 FTP服务器,支持IPv6,TLS,FTPS等功能。是一个在GPL许可证下开放源代码,免费的 FTP服务器。
1.检查服务器是否安装FTP服务。
rpm -qa | grep vsftpd
如果没有显示任何内容,则需要尚未安装vsftpd
。
2.运行以下命令安装vsftpd
yum install -y vsftpd
返回如图所示界面时,表示安装成功。
3.运行以下命令设置vsftpd
服务开机自启动。
systemctl enable vsftpd.service
4.启动FTP服务。
systemctl start vsftpd.service
5.查看FTP服务监听端口
netstat -antup | grep ftp
出现如下图所示界面,表示FTP服务已启动,监听的端口号为 21。此时,vsftpd
默认已开启匿名访问功能,您无需输入用户名密码即可登录FTP服务器,但没有修改或上传文件的权限。
配置vsftpd
vsftpd
允许用户以三种认证模式登录到FTP服务器上:匿名开放模式:任何人都可以无需密码登录到FTP服务器上。(!不安全)
本地用户模式:通过Linux系统的本地账户密码星系进行登录认证。
虚拟用户模式:通过建立仅供
vsftpd
服务使用的用户数据库,虚拟出用于登录认证的账户信息。PS: 只可同时配置一种认证模式。
匿名开放模式-配置
1.修改配置文件vsftpd.conf
。
vim /etc/vsftpd/vsftpd.conf
3.按i
键进入INSERT
模式,将匿名上传权限anon_upload_enable=YES
的注释解开(删除#
号)。
4.按ECS
退出insert
模式,输入:wq
保存并退出配置文件。
5.更改/var/ftp/pub
目录的权限,为FTP用户添加写权限。
chmod o+w /var/ftp/pub/
7.重启FTP服务。
systemctl restart vsftpd.service
本地用户模式-配置
1.为FTP服务创建一个Linux用户。
adduser 用户名
2.修改/指定密码
passwd 用户名
3.创建一个供FTP服务使用的文件目录。(以/var/ftp/vsftpd
为例)
mkdir /var/ftp/vsftpd
4.更改/var/ftp/vsftpd
目录的拥有者。
chown -R 用户名 /var/ftp/vsftpd
9.输入以下命令修改配置文件
主动模式
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets
sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录
sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单
sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录
echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf
echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录
被动模式
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets
sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录
sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单
sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录
echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf
echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录
以上配置与主动模式相同,以下为被动模式新增配置
echo "pasv_enable=YES" >> /etc/vsftpd/vsftpd.conf #开启被动模式
echo "pasv_address=<FTP服务器公网IP地址>" >> /etc/vsftpd/vsftpd.conf #配置FTP服务器IP地址
echo "pasv_min_port=20" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最小值
echo "pasv_max_port=21" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最大值
6.在/etc/vsftpd
目录下创建chroot_list
文件,并在文件中写入例外用户名单。(此名单中的用户不会被锁定在主目录,可以访问其他目录)
vim /etc/vsftpd/chroot_list
7.重启FTP服务。
systemctl restart vsftpd.service
检验vsftp
1.打开FTP客户端/浏览器,在地址栏输入ftp://<FTP服务器IP地址>:FTP端口
2.(以firefox
浏览器为例)在弹出的对话框中输入用户名和密码。
3.如出现如下界面,则登录成功,即可对FTP文件进行相应权限的操作。