配置文件在/etc/vsftpd.conf。
一键清空
sudo truncate -s 0 /etc/vsftpd.conf
写入
# ============================================
# vsftpd 只读配置 - 禁止匿名,本地用户仅下载
# ============================================
# --- 匿名访问控制 ---
anonymous_enable=NO
# --- 本地用户认证 ---
local_enable=YES
# --- 全局写权限关闭(只读场景核心设置)---
write_enable=NO
# --- 本地用户文件权限掩码 ---
local_umask=022
# --- 下载控制 ---
download_enable=YES
# --- chroot 目录隔离(将用户限制在其家目录)---
chroot_local_user=YES
# --- 指定所有本地用户的根目录 ---
local_root=/data/ftp
# --- 允许 chroot 目录可写(避免登录报错)---
# 仅在使用较新版本 vsftpd 时启用
allow_writeable_chroot=YES
# --- 用户白名单(仅允许指定用户登录)---
userlist_enable=NO
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
# --- 日志 ---
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
# --- 连接设置 ---
connect_from_port_20=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
# --- 被动模式端口(便于防火墙放行)---
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
# ---使用 UTF-8 编码 ---
utf8_filesystem=YES
# --- 禁止 root 用户登录(安全加固)---
# root 默认已在 /etc/vsftpd/ftpusers 黑名单中
重启服务
sudo systemctl restart vsftpd
sudo systemctl status vsftpd
放行端口
sudo ufw allow 21
sudo ufw allow 30000:31000/tcp