CentOS基础系列五 :搭建FTP服务(详细图解)

一、FTP服务介绍

FTP ( File Transfer Protocol,文件传输服务)服务是一种专门用于文件传输的服务,该服务使用的是文件传输协议,使用该服务将极大地方便文件的传输与管理。其最主要的功能是在服务器端与客户端之间进行文件的传输。FTP是以TCP封包的模式来进行服务器与客户端之间的连接的,当连接建立后,用户便可以在客户端连接FTP服务器来进行文件的上传与下载,同时也可以直接管理用户在FTP服务器上的文件。

1. 工作原理
FTP是基于客户端/服务器模式的,其工作原理如下
(1)客户端向服务器发出连接请求,同时客户端系统动态打开一个大于1024的端口(比如 2888 )等候服务器连接。
在这里插入图片描述
(2)当FTP服务器在端口21侦听到该请求后,会在客户端1031端口和服务器的21端口之间建立起一个FTP会话连接。
在这里插入图片描述
(3)要传输数据时,FTP客户端再动态打开一个大于1024的端口(比如2889)连接到服务器的20端口,并在这两个端口之间进行数据的传输。
在这里插入图片描述
(4)数据传输完毕后,FTP客户端将断开与FTP服务器的连接,客户端上动态分配的端口将自动释放掉。

二、安装FTP服务

在使用ftp服务之前一定要记得关闭防火墙selinux

[root@centos7-108 etc]# systemctl stop firewalld
[root@centos7-108 etc]# setenforce 0
setenforce: SELinux is disabled

1. 安装ftp软件包

[root@centos8-106 home]# rpm -qa | grep vsftpd
vsftpd-3.0.3-32.el8.x86_64

若没有发现则没有安装软件包,此时我们使用yum安装软件包
sudo 表示已管理员的身份执行

[rion@centos7-108 ~]# yum install vsftpd -y

2. FTP服务启动

systemctl start vsftpd.service

3. FTP开机启动

systemctl enable vsftpd.service

三、FTP配置文件

1. 配置文件介绍

[root@centos7-108 ~]# tree /etc/vsftpd/
/etc/vsftpd/
├── ftpusers						# 所有位于此文件内的用户都不能访问vsFTPd服务。
├── user_list						# ftp 用户名单,可以设置白名单或黑名单
├── vsftpd.conf						# ftp配置文件
└── vsftpd_conf_migrate.sh	

/etc/pam.d/vsftpd		
# vsFTPd的The Pluggable Authentication Module配置文件,它主要用来加强vsFTPd服务器的用户认证。

先备份原来的vsftpd配置文件,然后去掉里面的注释行,剩下的就是默认配置

[root@centos7-108 ~]# cd /etc/vsftpd/
[root@centos7-108 vsftpd]# cp vsftpd.conf vsftpd.conf.bak
[root@centos7-108 vsftpd]# grep -v "#" vsftpd.conf.bak > vsftpd.conf
[root@centos7-108 vsftpd]# cat vsftpd.conf
anonymous_enable=YES			# 匿名用户是否运行登录
local_enable=YES				# 允许本地用户登录 FTP
write_enable=YES				# 运行用户在 FTP 目录有写入的权限
local_umask=022					# 设置本地用户的文件生成掩码为 022, 默认是 077
dirmessage_enable=YES			# 激活目录信息,当远程用户更改目录时,将出现提示信息
xferlog_enable=YES				# 启用上传和下载日志功能
connect_from_port_20=YES		# 启用 FTP 数据端口的连接请求
xferlog_std_format=YES			# 是否使用标准的 ftpd xferlog 日志文件格式
listen=NO					    # 使 vsftpd 处于独立启动监听端口模式
listen_ipv6=YES

pam_service_name=vsftpd			# 设置PAM认证服务配置文件名称, 文件存放在/etc/pam.d/目录
userlist_enable=YES				# 用户列表中的用户是否允许登录 FTP 服务器,默认是不允许
tcp_wrappers=YES				# 户列表中的用户是否允许登录 FTP 服务器,默认是不允许
[root@centos7-108 vsftpd]# 

2. 实现匿名登录管理

匿名用户登录
查看ftp配置文件/etc/vsftpd/vsftpd.conf

[root@centos7-108 etc]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES			# 设置是否运行匿名用户登录

此时我们使用匿名用户登录ftp服务,匿名用户的账号名默认为anonymous ,密码为空
在这里插入图片描述
也可以通过文件管理器访问ftp服务
在这里插入图片描述
匿名用户配置参数
在配置文件中加入参数,给予上传文件夹777权限。

# 基于pub文件777权限
[root@centos7-108 ftp]# chmod 777 pub
[root@centos7-108 ftp]# ll
总用量 0
drwxrwxrwx 2 root root 21 4月  22 17:54 pub

# 实现匿名用户上传文件,创建文件夹,删除权限等
[root@centos7-108 ftp]# cat /etc/vsftpd/vsftpd.conf
anon_root=/var/ftp/pub			# 定义上传文件开关
anon_upload_enable=YES			# 匿名用户创建文件夹权限
anon_mkdir_write_enable=YES		# 匿名用户写入权限
anon_other_write_enable=NO		# 匿名用户带宽限制,字节为单位。50000=5KB
anon_max_rate=50000				# 匿名用户上传速率


测试,我们登录ftp,上传文件试试,成功上传了文件
在这里插入图片描述

3. 实现本地用户登录

本地用户创建及配置参数

  • 创建本地用户
  • 添加配置文件参数

(1)创建用户 jack

useradd jack		# 创建用户Jack
passwd jack			# 设置 jack 的登录密码 
useradd tom		
passwd tom	

# 创建用户,但是不能登录终端,可以登录FTP
useradd -s /sbin/nologin mark				# 创建用户,当不能登录终端
sed -i '$a /sbin/nologin' /etc/shells 		# 用户登录登录FTP

在这里插入图片描述
在这里插入图片描述
(2)本地用户配置参数

local_enable=YES							# 运行本地用户登录,只有在此选项为YES 时,下面的选项才生效
chroot_list_enable=YES						# 设置用户不能离开主目录
chroot_list_file=/etc/vsftpd/chroot_list	# 设置不能离开主目录的用户表
userlist_enable=YES							# 启动用户列表
userlist_deny=NO							# NO,为白名单,表示用户列表中的用户可以登录,为YES则表示列表中的用户不能登录
userlist_file=/etc/vsftpd/user_list			# 设置用户列表
allow_writeable_chroot=yes			# 运行用户上传文件
local_root=/home					# 指定本地用户登录时切换的目录

(3)测试,先只打开local_enable=YES ,运行本地用户登录
在这里插入图片描述
匿名用户登录失败
在这里插入图片描述
jack用户登录成功
在这里插入图片描述
小案例
实现jack用户可以访问同级目录下的文件,tom用户不能离开主目录。用户登录默认切换到home下面

实现:
配置文件

#====== 本地用户配置 =====#
local_enable=YES
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd/chroot_list
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
local_root=/home

在这里插入图片描述

  • chroot_list 文件
[root@centos7-108 vsftpd]# cat /etc/vsftpd/chroot_list 
# 设置不能离开主目录
tom
  • user_list 文件
[root@centos7-108 vsftpd]# cat /etc/vsftpd/user_list
jack
tom
  • 测试tom
    在这里插入图片描述
  • 测试jack
    在这里插入图片描述

4. 连接配置

## ============ 自定义连接配置  =============== ##
max_clients=100			 # 最多允许100个客户端连接
max_per_ip=5			 # 同时在线最多5个
idle_session_timeout=15	 # 设置连接超时时间

好了,这是些简单的FTP配置,更深入的配置我也不会,哈哈。希望大家能学有所成,天天开心哈。

四、工具介绍

FTP连接工具很多,比如常见的有winscp,可以实现文件传输,还有filezilla,xftp等等。
使用工具可以很方便传输文件。

  • filezilla
    我使用的是这个,之前有用过winscp,后面不知道为啥不用了。这是软件截图,用着还可以。
    在这里插入图片描述