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


1
2
3
4
5
6
7
8
(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 # 指定本地用户登录时切换的目录
1
2
3
4
5
6
7
8
(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,后面不知道为啥不用了。这是软件截图,用着还可以。

————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_56966142/article/details/116013245

浙公网安备 33010602011771号