每天一个新知识之Linux(CentOS7)下部署vsftp服务

文章目录

  • 一、VSFTP的概述
    • 1.1 什么是VSFTP
    • 1.2VSFTP连接的类型
    • 1.3 VSFTP的工作模式
    • 1.4 VSFTP传输模式
    • 1.5VSFTP的验证方式
  • 二、部署VSFTP
    • 2.1 部署VSFTP
    • 2.2 匿名用户验证
    • 2.3 本地用户验证
    • 2.4 虚拟用户验证

一、VSFTP的概述

1.1 什么是VSFTP

​ VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,全称为Very Secure FTP。

1.2VSFTP连接的类型

  • 控制连接
    • 持续连接,使用TCP端口21,用于用户指令的收发
  • 数据连接
    • 按需连接,使用TCP端口20,用于上传下载数据

1.3 VSFTP的工作模式

  • Port模式(主动模式)

    FTP客户端先和服务器的TCP21端口通讯建立连接,用来发送命令,客户端需要接收数据时在这个连接上发送PORT命令。PORT命令包含了客户端的信息,在传送数据时服务器使用TCP20端口连接至客户端的指定端口发送数据。FTP服务器必须和客户端端建立一个新的连接来传送数据。

  • Passive模式(被动模式)

    FTP客户端首先和服务器的TCP21端口建立连接,用来发送命令,连接建立后客户端发送Pasv命令,服务器收到Pasv命令后打开一个临时端口(1023~65535)并通知客户端在这个端口上传送数据,客户端连接FTP服务器的临时端口,然后FTP服务器将通过这个端口传送数据。

1.4 VSFTP传输模式

  • Binary模式:不对数据进行任何处理,适用与可执行文件、压缩文件、图片等数据传输。

  • ASCII模式:进行文本传输时自动适配目标操作系统的结束符。

    在Linux的红帽发行版本中VSFTP默认使用Binary模式,如需切换输入ascii即可转换为ACSII模式,输入bin转换为Binary模式

1.5VSFTP的验证方式

  • 匿名用户验证

    用户账号 用户账号密码 工作目录 默认权限
    ftp或anonymous /var/ftp 下载
  • 本地用户验证

    用户账号 用户账号密码 工作目录 默认权限
    本地用户/etc/passwd 用户密码/etc/shadow 用户的宿主目录 上传、下载、修改
  • 虚拟用户验证

    用户账号 用户账号密码 工作目录 默认权限
    创建 指定 指定 指定

二、部署VSFTP

2.1 部署VSFTP

#关闭防火墙和SELinux
[root@centos-01 ~]# systemctl stop firewalld
[root@centos-01 ~]# sudo systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@centos-01 ~]# sudo setenforce 0
[root@centos-01 ~]# getenforce
Permissive
[root@centos-01 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 
[root@centos-01 ~]# grep SELINUX=disabled /etc/selinux/config
SELINUX=disabled
#使用yum安装vsftpd
[root@centos-01 ~]# yum -y install vsftpd
#查看安装是否成功
[root@centos-01 ~]# rpm -qa | grep vsftpd
vsftpd-3.0.2-27.el7.x86_64
#启动vsftpd服务
[root@centos-01 ~]# systemctl start vsftpd
#设置vsftpd开机自启动
[root@centos-01 ~]# systemctl enable vsftpd
#查看vsftpd服务是否开机自启动
[root@centos-01 ~]# systemctl is-enabled vsftpd
enabled

2.2 匿名用户验证

#修改配置文件/etc/vsftpd/vsftpd.conf 
[root@centos-01 ~]# vi /etc/vsftpd/vsftpd.conf 
# Example config file /etc/vsftpd/vsftpd.conf
anonymous_enable=YES			#启用匿名访问
anon_root=/var/ftp				#匿名用户上传文件的权限掩码
anon_upload_enable=YES			#匿名用户的FTP根目录
anon_mkdir_write_enable=YES		#允许匿名用户创建目录
anon_other_write_enable=YES		#开放其他权限(删除、覆盖、重命名)
anon_max_rate=0					#限制最大传输速率,单位bytes/s,0为不限速
dirmessage_enable=YES			#显示该目录需要注意的内容,对应目录下.message文件配置对应内容
#创建匿名用户的上传文件夹
[root@centos-01 ~]# mkdir /var/ftp/anon_upload
#将新创建的文件夹权限改为777
[root@centos-01 ~]# chmod 777 /var/ftp/anon_upload/
#编辑.message文件
[root@centos-01 ~]# vi /var/ftp/anon_upload/.message
匿名用户目录,匿名用户拥有完全权限。
#重启vsftp服务
[root@centos-01 ~]# systemctl restart vsftpd
#客户端验证
C:\Users\86186>ftp
ftp> open 192.168.64.130
连接到 192.168.64.130。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.64.130:(none)): ftp
331 Please specify the password.
密码:
230 Login successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
anon_upload
pub
226 Directory send OK.
ftp: 收到 21 字节,用时 0.00秒 21.00千字节/秒。
ftp> cd anon_upload
250-匿名用户目录,匿名用户拥有完全权限。
250 Directory successfully changed.
ftp> pwd
257 "/anon_upload"
ftp> put F:\hfs.zip				#上传一个文件
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 发送 1114972 字节,用时 0.00秒 278743.00千字节/秒。
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
hfs.zip							#文件已上传
226 Directory send OK.
ftp: 收到 12 字节,用时 0.00秒 12000.00千字节/秒。
ftp> rename hfs.zip hfs1.zip	#重命名文件
350 Ready for RNTO.
250 Rename successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
hfs1.zip
ftp> delete hfs1.zip			#删除上传的文件
250 Delete operation successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.

2.3 本地用户验证

#修改配置文件/etc/vsftpd/vsftpd.conf 
[root@centos-01 ~]# cat /etc/vsftpd/vsftpd.conf 
local_enable=YES						#是否启用本地用户
local_umask=022							#本地用户上传文件权限掩码
local_root=/var/ftp						#本地用户FTP根目录
local_max_rate=0						#限制最大传输速率
write_enable=YES						#登录用户是否有写权限			
ftpd_banner=Welcome to FTP service!		#欢迎信息
userlist_deny=NO						#禁止/etc/vsftpd/user_list中出现的用户名登录
chroot_local_user=YES

#创建用于ftp使用的用户,并禁止该用户登录系统
[root@centos-01 ~]# useradd -s /sbin/nologin ftp1
[root@centos-01 ~]# useradd -s /sbin/nologin ftp2
#修改密码
[root@centos-01 ~]# passwd ftp1
[root@centos-01 ~]# passwd ftp2
#禁止ftp2登录
[root@centos-01 ~]# vi /etc/vsftpd/user_list 
...
ftp2
#重启服务
[root@centos-01 ~]# systemctl restart vsftpd

2.4 虚拟用户验证

#建立FTP虚拟用户数据库文件
#用户名密码文本文件,奇数行用户、偶数行密码
[root@centos-01 ~]# vi /etc/vsftpd/vsftpd.user
ftpu01
12345678
ftpu02
12345678
#将建立的用户名密码文本文件转换为数据库类型,并使用hash加密
[root@centos-01 ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd.user /etc/vsftpd/vsftpd.db
#创建virtual用户作为ftp的虚拟用户的映射用户并指定家目录为/var/ftproot
[root@centos-01 ~]# useradd -d /var/ftproot -s /sbin/nologin virtual
[root@centos-01 ~]# chmod o+x /var/ftproot/
[root@centos-01 ~]# chmod a-w /var/ftproot/	
#生成认证配置文件
[root@centos-01 ~]# cp -a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam
[root@centos-01 ~]# vi /etc/pam.d/vsftpd.pam 
auth    required pam_userdb.so  db=/etc/vsftpd/vsftpd
account required pam_userdb.so  db=/etc/vsftpd/vsftpd

[root@centos-01 ~]# vi /etc/vsftpd/vsftpd.conf 
#anonymous_enable=YES	
#anon_root=/var/ftp				
#anon_upload_enable=YES			
#anon_mkdir_write_enable=YES		
#anon_other_write_enable=YES		
#anon_max_rate=0			
local_enable=YES
#local_root=/var/ftp
pam_service_name=vsftpd.pam
guest_enable=YES
guest_username=virtual
user_config_dir=/etc/vsftpd/dir
#创建虚拟用户配置文件
[root@centos-01 ~]# mkdir /etc/vsftpd/dir
[root@centos-01 ~]# vi /etc/vsftpd/dir/ftpu01
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
#重启vsftp服务
[root@centos-01 ~]# !sys
systemctl restart vsftpd
ftp> open 192.168.64.130
连接到 192.168.64.130。
220 Welcome to FTP service!
200 Always in UTF8 mode.
用户(192.168.64.130:(none)): ftpu01
331 Please specify the password.
密码:
230 Login successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
ftp> pwd
257 "/"

你可能感兴趣的:(Linux)