首页  /  常用服务搭建  /  正文

FTP 服务搭建

常用服务搭建 2026-10-01📖 10 分钟👁 —
🔧 运维进阶 · 常用服务搭建第 3 / 8 页12345678📖 完整导航 →

参考文档:https://blog.csdn.net/weixin_45551608/article/details/116903931

一、FTP 简介

1. 它是干啥的

用来传输文件的协议。FTP 是 File Transfer Protocol(文件传输协议)的英文简称, 中文简称"文传协议",用于 Internet 上控制文件的双向传输。

同时它也是一个应用程序(Application)。基于不同的操作系统有不同的 FTP 应用程序, 而这些应用程序都遵守同一种协议来传输文件。

2. 用的端口

FTP 服务器默认使用 TCP 协议的 20、21 端口与客户端通信:

端口作用
20建立数据连接,传输文件数据
21建立控制连接,传输 FTP 控制命令

3. 数据连接方式

分主动模式和被动模式:


二、搭建步骤

详见文档,此处仅保留关键步骤。

1. 设置匿名用户访问的 FTP 服务(最大权限)

一般不会启用最大权限,只保留上传和读的权限。
vim /etc/vsftpd/vsftpd.conf          # 修改配置文件

anonymous_enable=YES                 # 开启匿名用户访问。默认已开启
write_enable=YES                     # 开放服务器的写权限(若要上传,必须开启)。默认已开启
anon_umask=022                       # 设置匿名用户所上传数据的权限掩码(反掩码),需手动添加
                                     # 文件 644,目录 755

anon_upload_enable=YES               # 允许匿名用户上传文件。默认已注释,需取消注释
anon_mkdir_write_enable=YES          # 允许匿名用户创建(上传)目录。默认已注释,需取消注释
anon_other_write_enable=YES          # 允许删除、重命名、覆盖等操作。需添加
chmod 777 /var/ftp/pub/              # 最大权限,测试用
systemctl start vsftpd
systemctl stop firewalld.service     # 关闭防火墙
setenforce 0                         # 关闭底层的防火墙,测试用

2. 设置本地用户验证访问,并禁止切换到 ftp 以外的目录

默认登录的根目录为本地用户的家目录。
⚠️ 注意和之前的配置不能冲突,必须检查。
vim /etc/vsftpd/vsftpd.conf          # 修改配置文件

local_enable=YES                     # 启用本地用户
anonymous_enable=no                  # 关闭匿名用户访问
write_enable=YES                     # 开放服务器的写权限(若要上传,必须开启)
local_umask=077                      # 可设置仅宿主用户拥有被上传文件的权限(反掩码)
chroot_local_user=YES                # 将访问禁锢在用户的宿主目录中
allow_writeable_chroot=yes           # 允许被限制的用户主目录具有写权限
systemctl restart vsftpd

3. 设置白名单

vim /etc/vsftpd/vsftpd.conf          # 修改配置文件
userlist_enable=YES                  # 启动 user_list 用户列表文件
userlist_deny=NO                     # 设置白名单:仅允许 user_list 里的用户访问
                                     # 默认为 yes,就是黑名单,禁用

vim /etc/vsftpd/user_list            # 修改白名单,把允许访问的用户名加到末尾即可

三、配置项备忘

1. 默认参数

配置项默认值意思
anonymous_enableYES匿名用户能不能进
local_enableNO本地用户(系统账号)能不能进
write_enableYES能不能上传 / 删除 / 改名
local_umask022上传的文件权限(别人能看不能改)
chroot_local_userNO用户能不能在家目录外乱逛
listen_ipv6YES监听 IPv6 连接
pam_service_namevsftpd用系统账号登录时的验证方式
userlist_enableYES是否启用用户黑白名单

2. 两套配置只能存在一套

方案一:匿名用户(最大权限)

anonymous_enable=YES          # 允许匿名登录
write_enable=YES              # 允许写入(全局开关)
anon_umask=022                # 上传文件权限 644/755
anon_upload_enable=YES        # 允许上传文件
anon_mkdir_write_enable=YES   # 允许创建目录
anon_other_write_enable=YES   # 允许删除 / 重命名

方案二:本地用户验证

local_enable=YES              # 允许系统用户登录
anonymous_enable=NO           # 关闭匿名访问
write_enable=YES              # 允许写入
local_umask=077               # 上传文件权限 600/700(仅自己可见)
chroot_local_user=YES         # 限制用户在自己的家目录
allow_writeable_chroot=YES    # 允许家目录可写(必须加)