Linux配置FTP匿名访问需先安装vsftpd并启用服务,再在vsftpd.conf中设置anonymous_enable=YES、no_anon_password=YES、write_enable=YES及上传相关参数,接着为/var/ftp/pub赋权777并配置防火墙与SELinux策略,最后重启服务即可。

在 Linux 中配置 FTP 匿名访问服务,核心是安装 vsftpd 并正确设置其主配置文件,同时确保目录权限、防火墙和 SELinux(如启用)不阻碍访问。整个过程不复杂但容易忽略细节,尤其权限和安全模块限制。
安装 vsftpd 并启动服务
以 CentOS/RHEL 8+ 或 Rocky/AlmaLinux 系统为例(使用 dnf),或 CentOS 7(使用 yum):
- 安装服务:
sudo dnf install -y vsftpd(或yum install -y vsftpd) - 启动并设为开机自启:
sudo systemctl enable --now vsftpd - 确认运行状态:
sudo systemctl status vsftpd(应显示 active (running))
修改 vsftpd.conf 启用匿名功能
编辑主配置文件:sudo vim /etc/vsftpd/vsftpd.conf,确保以下关键项已设置(取消注释并调整值):
-
anonymous_enable=YES(必须开启,否则匿名登录被拒) -
no_anon_password=YES(允许空密码登录,即输anonymous后直接回车) -
anon_root=/var/ftp(可选,明确指定匿名用户根目录,默认即为此路径) -
write_enable=YES(全局写权限开关,上传/建目录等操作的前提) -
anon_upload_enable=YES(允许上传文件) -
anon_mkdir_write_enable=YES(允许创建子目录) -
anon_other_write_enable=YES(谨慎开启,允许删除、重命名;实验环境可开,生产慎用) -
anon_umask=022(上传后文件权限为 644,目录为 755)
设置上传目录权限与测试文件
匿名用户默认根目录是 /var/ftp,但该目录本身不能有写权限(否则 vsftpd 拒绝启动或登录)。上传需放在其子目录中,例如 /var/ftp/pub:
- 创建上传目录:
sudo mkdir -p /var/ftp/pub - 赋权(关键!):
sudo chown ftp:ftp /var/ftp/pub && sudo chmod 777 /var/ftp/pub
(注意:777 仅用于实验;生产环境建议用 755 + SELinux 上下文或更细粒度控制) - 放个测试文件便于验证:
echo "test for anonymous ftp" | sudo tee /var/ftp/pub/readme.txt
处理防火墙与 SELinux
常见连接失败往往卡在这两步:
-
防火墙:开放 FTP 服务(自动映射端口 21 和被动模式所需范围)
sudo firewall-cmd --permanent --add-service=ftp && sudo firewall-cmd --reload -
SELinux(若处于 enforcing 模式):
• 允许匿名写入:sudo setsebool -P ftpd_anon_write on
• 确保目录有正确上下文:sudo semanage fcontext -a -t public_content_rw_t "/var/ftp/pub(/.*)?" && sudo restorecon -Rv /var/ftp/pub
完成上述步骤后,重启服务:sudo systemctl restart vsftpd。从另一台机器用 ftp 服务器IP 命令连接,用户名输入 anonymous,密码直接回车,即可进入并测试上传下载。


















