Skip to content

文件共享服务FTP介绍

  • FTP(File Transfet Protocol):文件传输协议
  • FTP是一种在互联网中基于TCP协议端到端的数据传输协议

  • 基于C/S架构,默认使用20、21号端口

  • 端口20(数据端口)用于数据传输

  • 端口21(命令端口)用于接收客户端发出的相关FTP命令

FTP工作模式

  • 主动模式:FTP客户端从本机的非特殊端口(>1023)连接FTP服务器的命令端口21,服务端通过本地的20号端口主动向客户端的随机端口发起连接请求,开始传输数据

  • 被动模式:FTP客户端通过向FTP服务器发送PASV命令进入被动模式,FTP服务器会另开一个随机端口,客户端主动连接到随机端口后,开始传输数据

  • 可以实现ftp功能的软件:

    • WU-ftpd:
    • proftpd:专业的FTP软件
    • pureftp:纯粹的FTP软件
    • vsftpd:非常安全的ftp软件
    • ServU:windows里的一款FTP软件
  • 客户端访问ftp服务器工具:

    • ftp
    • lftp、lftpget
    • wget
    • curl
    • FileZilla:windows客户端工具,可从软件商店直接下载
    • 浏览器

vsftpd介绍

  • vsftpd(very secure ftp daemon)非常安全的FTP守护进程
  • 是一款运行在Linux操作系统上开源且免费FTP服务程序
  • 不仅完全开源而且免费,还为我们提供了一个快速的、稳定并且安全的FTP服务

vsftpd用户模式

  • 本地用户
  • 虚拟用户
  • 匿名用户:默认的客户端访问模式

vsftpd服务相关参数

  • /var/ftp #匿名用户共享目录
  • /etc/vsftpd #配置文件所在目录
  • /etc/vsftpd/vsftpd.conf #主配置文件
  • /usr/sbin/vsftpd #主程序文件
  • /etc/vsftpd/ftpusers #黑名单
  • /etc/vsftpd/user_list #控制名单(配置文件控制白名单与黑名单)
  • /var/log/xferlog #日志目录

vsftpd匿名用户模式

shell
#修改FTP服务端主机名
[root@ftp-server ~]# hostnamectl set-hostname ftp-server

#搭建本地yum仓库
[root@ftp-server ~]# mkdir /mnt/centos
[root@ftp-server ~]# mount /dev/cdrom /mnt/centos
[root@ftp-server ~]# rm -rf /etc/yum.repos.d/*
[root@ftp-server ~]# vim /etc/yum.repos.d/local.repo
[centos_file]
name=centos7
baseurl=file:///mnt/centos
enabled=1
gpgcheck=0

#关闭防火墙
[root@ftp-server ~]# systemctl stop firewalld
[root@ftp-server ~]# systemctl disable firewalld

#临时关闭SELinux
[root@ftp-server ~]# setenforce 0

#修改配置文件永久关闭SELinux
[root@ftp-server ~]# vim /etc/selinux/config 
...
SELINUX=disabled

#安装软件
[root@ftp-server ~]# yum -y install vsftpd

#启动服务
[root@ftp-server ~]# systemctl start vsftpd

#查看服务运行状态
[root@ftp-server ~]# systemctl status vsftpd

#客户端下载连接工具
[root@client ~]# yum -y install ftp lftp

#客户端访问FTP服务端
[root@client ~]# ftp 192.168.0.26

#匿名用户权限介绍
[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf 
...
12 anonymous_enable=YES          #是否允许匿名用户访问,yes允许,no不允许
29 #anon_upload_enable=YES       #是否允许匿名用户上传,yes允许,no不允许
33 #anon_mkdir_write_enable=YES  #是否允许匿名用户创建目录,yes允许,no不允许
...
anon_other_write_enable=yes     #是否允许匿名用户写权限,yes允许,no不允许(手动添加)

vsftpd本地用户模式

shell
#创建本地用户
[root@localhost ~]# useradd ftpuser
[root@localhost ~]# passwd ftpuser

#修改主配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
...
 12 anonymous_enable=NO      #关闭匿名用户访问
 16 local_enable=YES         #是否允许本地用户访问,yes允许,no不允许
 19 write_enable=YES         #是否允许本地用户有写权限,yes允许,no不允许
 23 local_umask=022          #本地用户上传文件默认权限为755
 37 dirmessage_enable=YES    #当用户第一次进入新目录时显示消息(了解)
 40 xferlog_enable=YES       #启动xferlog日志记录,该文件记录传输数据
 53 #xferlog_file=/var/log/xferlog  #日志文件位置,需删除注释
 43 connect_from_port_20=YES     #启用数据传输端口
 49 #chown_username=whoever      #改变上传文件的属主与属组
 60 #idle_session_timeout=600    #客户端连接超时时间
 63 #data_connection_timeout=120 #数据连接超时时间
101 chroot_local_user=YES   #是否允许本地用户切换目录,yes不允许,no允许
115 listen=NO  #是否开启监听IPV4的连接,默认没开启,改为yes
126 pam_service_name=vsftpd #启用pam认证的文件名称,路径为/etc/pam.d/vsftpd
127 userlist_enable=YES     #是否启用控制名单文件,yes启用,no不启用,文件为/etc/vsftpd/user_list,如果启用控制名单功能,需要指定该文件为黑名单|白名单
128 userlist_deny=no       #yes拒绝user_list文件中用户登录ftp服务器(黑名单),no允许登录(白名单)
max_clients=	#限制最大并发连接数量

vsftpd虚拟用户模式