在RedHat系统中搭建FTP服务器通常使用vsftpd(Very Secure FTP Daemon),这是一款轻量级、安全且高性能的FTP服务软件,以下是详细的配置步骤和注意事项,帮助您快速部署和管理FTP服务。

安装vsftpd
确保系统已连接到RedHat的yum源,然后执行以下命令安装vsftpd:
sudo yum install vsftpd -y
安装完成后,启动服务并设置为开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
默认情况下,vsftpd配置文件位于/etc/vsftpd/vsftpd.conf,建议先备份原始配置文件:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
核心配置
编辑配置文件以调整FTP服务的行为:

sudo vim /etc/vsftpd/vsftpd.conf
以下为关键参数及其说明:
| 参数 | 说明 | 推荐值 |
|---|---|---|
| anonymous_enable | 是否允许匿名用户访问 | NO(默认为NO,安全建议关闭) |
| local_enable | 是否允许本地用户登录 | YES |
| write_enable | 是否允许用户上传/修改文件 | YES |
| chroot_local_user | 是否将用户限制在主目录 | YES(增强安全性) |
| allow_writeable_chroot | 是否允许chroot目录可写 | YES(需配合chroot_local_user使用) |
| pasv_min_port / pasv_max_port | 被动模式端口范围 | 10000-10100(需防火墙放行) |
| userlist_enable | 是否启用用户列表文件 | YES |
| userlist_file | 用户列表文件路径 | /etc/vsftpd/user_list |
| tcp_wrappers | 是否使用TCP Wrappers控制访问 | YES |
配置完成后,保存文件并重启服务:
sudo systemctl restart vsftpd
创建FTP用户
假设需要为用户ftpuser创建FTP账户,执行以下步骤:
- 创建系统用户并设置密码:
sudo useradd -m -s /sbin/nologin ftpuser sudo passwd ftpuser
- 将用户加入
user_list文件(若启用用户列表控制):echo "ftpuser" | sudo tee -a /etc/vsftpd/user_list
防火墙与SELinux配置
RedHat默认启用防火墙和SELinux,需放行FTP相关服务:

- 防火墙配置:
sudo firewall-cmd --permanent --add-service=ftp sudo firewall-cmd --reload
- SELinux配置(临时关闭或设置布尔值):
sudo setsebool -P ftpd_full_access on
常见问题排查
- 用户无法登录:检查
/etc/vsftpd/ftpusers文件是否禁止了该用户,确认密码和SELinux设置。 - 被动模式连接失败:确保防火墙放行了
pasv_min_port和pasv_max_port指定的端口范围。
相关问答FAQs
Q1: 如何限制FTP用户只能访问其主目录,不能切换到上级目录?
A1: 在vsftpd.conf中设置chroot_local_user=YES,如果用户被限制后无法上传文件,还需开启allow_writeable_chroot=YES(RedHat 7+支持),并确保主目录权限为755(chmod 755 /home/ftpuser)。
Q2: 如何实现匿名用户只读下载,禁止上传?
A2: 在配置文件中设置anonymous_enable=YES,同时添加anon_upload_enable=NO和anon_world_readable_only=YES,若需匿名上传,可创建/var/ftp/incoming目录并设置权限为777,然后启用anon_upload_enable=YES和anon_mkdir_write_enable=YES(需谨慎使用,存在安全风险)。
