银河麒麟 / AlmaLinux vsftpd 完整部署全流程(从安装→配置→账号→防火墙→客户端连接)

发布时间:2026/7/23 7:48:26
银河麒麟 / AlmaLinux vsftpd 完整部署全流程(从安装→配置→账号→防火墙→客户端连接) 一、安装 vsftpd1. RPM 系AlmaLinux、CentOS、麒麟服务器方式 1yum 在线安装推荐 bash 运行 yum install -y vsftpd 方式 2离线安装无外网服务器 有网机器下载 rpm 包 yum install --downloadonly --downloaddir/tmp/vsftpd vsftpd 将 /tmp/vsftpd 文件夹传到麒麟服务器 离线安装 cd /tmp/vsftpd rpm -ivh *.rpm --nodeps2. 设置开机自启、启动服务# 开机自启 systemctl enable vsftpd # 启动服务 systemctl start vsftpd # 查看运行状态 systemctl status vsftpd二、核心配置文件说明主配置文件/etc/vsftpd/vsftpd.conf黑白名单文件/etc/vsftpd/user_list黑名单匹配用户直接断开连接不弹出密码框/etc/vsftpd/ftpusers终极黑名单PAM 层拦截不受配置控制root 永久在此三、修改完整可用配置覆盖默认缺陷生产标准vim /etc/vsftpd/vsftpd.conf全部替换为下面内容# 关闭匿名登录 anonymous_enableNO # 允许系统本地账号登录 local_enableYES # 开启上传、新建、删除权限 write_enableYES # 上传文件权限 644文件夹755 local_umask022 # 目录提示、传输日志 dirmessage_enableYES xferlog_enableYES connect_from_port_20YES xferlog_std_formatYES # 核心安全禁锢用户家目录防止访问系统文件 chroot_local_userYES allow_writeable_chrootYES # 被动模式端口范围FileZilla等客户端默认使用 pasv_min_port40000 pasv_max_port50000 # 监听IPv4关闭纯IPv6监听Windows客户端才能连上 listenYES listen_ipv6NO # 认证与黑名单开关 pam_service_namevsftpd userlist_enableYES # 关闭反向解析加快连接速度 reverse_lookup_enableNO # 禁止递归ls降低服务器IO压力 ls_recurse_enableNO配置生效systemctl restart vsftpd四、防火墙放行端口必须操作否则外网连不上FTP 控制端口 21被动数据端口 40000-50000# 永久放行端口 firewall-cmd --permanent --add-port21/tcp firewall-cmd --permanent --add-port40000-50000/tcp # 重载防火墙规则 firewall-cmd --reload # 验证端口是否放行 firewall-cmd --list-ports五、关闭 SELinux避免上传 / 目录权限报错# 临时关闭重启失效 setenforce 0 # 永久关闭 sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config六、创建 FTP 专用登录账号禁止 root 登录 FTP1. 创建用户 指定文件存储目录# 创建ftpuser用户家目录/data/ftp_fileFTP虚拟根目录 useradd -d /data/ftp_file ftpuser # 设置登录密码FTP登录密码和系统密码一致 passwd ftpuser输入两次密码即为客户端 FTP 登录密码。2. 目录权限修复防 500 chroot 报错# 目录归属为ftpuser chown ftpuser:ftpuser /data/ftp_file # 权限755不能777 chmod 755 /data/ftp_file七、黑白名单规则说明默认无需修改/etc/vsftpd/user_list内 root、bin、daemon、nobody 等系统账号直接拒绝连接/etc/vsftpd/ftpusers同上名单二次拦截哪怕删除 user_list 里的 root 也无法登录自建用户 ftpuser 不在两份名单可正常登录可选白名单模式只允许指定用户登录如需严格管控修改 vsftpd.conf 增加一行userlist_denyNO然后清空user_list只写入允许登录的账号ftpuser testuser重启服务后只有文件内用户能登录 FTP。八、主动模式 / 被动模式区分控制通道固定 21 端口传输账号、ls、cd 等命令被动模式推荐FileZilla / 浏览器默认客户端主动连服务器 40000-50000 端口传输文件适配内网、家庭宽带、云服务器无 NAT 拦截问题。主动模式不推荐服务器 20 端口主动连客户端家用路由器会拦截现象能登录但看不到文件列表。九、登录后目录逻辑重点配置开启chroot_local_userYES禁锢后客户端 FTP 里看到的虚拟根/ 服务器物理路径/data/ftp_file用户无法 cd 切换到 /etc、/usr、/root等系统目录只能操作 /data/ftp_file 内部文件所有上传下载文件全部保存在 /data/ftp_file 下如果注释掉 chroot 两行默认裸配置 仅默认进入 /data/ftp_file但可随意浏览服务器全部系统文件极度不安全。十、客户端连接操作FileZilla 为例协议FTP主机服务器 IP端口21用户ftpuser密码你 passwd 设置的密码传输设置保持默认「被动模式」 连接成功后只能看到 /data/ftp_file 内的文件无法访问服务器系统目录。十一、常见故障快速排查客户端连不上 FTPlistenNO只监听 IPv6、防火墙 21 端口未放行登录成功看不到文件列表未配置 pasv 端口、防火墙 40000-50000 未放行登录报 500 OOPS: chroot缺少 allow_writeable_chrootYES 或目录权限 777账号 root 无法登录属于黑名单机制正常安全设计不要解除无法上传文件write_enableNO、目录归属不是 ftpuser、SELinux 拦截