在阿里云Linux服务器上搭建FTP服务,需完成环境准备、安装服务、配置防火墙及安全设置等步骤,以下以CentOS 7系统为例,详细说明操作流程。

通过SSH工具连接至阿里云ECS实例,确保系统已更新至最新状态,执行yum update -y
命令更新软件包,接着安装vsftpd(Very Secure FTP Daemon),这是Linux下常用的FTP服务器软件,使用命令yum install vsftpd -y
进行安装,安装完成后启动服务并设置开机自启:systemctl start vsftpd
和systemctl enable vsftpd
。
配置vsftpd参数,编辑配置文件/etc/vsftpd/vsftpd.conf
,关键参数设置如下:
anonymous_enable=NO
:禁止匿名用户访问local_enable=YES
:允许本地用户登录write_enable=YES
:启用文件写入权限chroot_local_user=YES
:限制用户仅能访问自家目录allow_writeable_chroot=YES
:允许被限制在主目录的用户具有写权限pasv_min_port=30000
和pasv_max_port=31000
:设置被动模式端口范围
保存配置后,创建FTP专用用户,执行useradd -d /home/ftpuser -s /sbin/nologin ftpuser
创建用户并禁止其SSH登录,设置密码echo "yourpassword" | passwd --stdin ftpuser
,为增强安全性,可配置仅允许特定用户访问,在/etc/vsftpd/user_list
文件中添加用户名,并设置userlist_enable=YES
和userlist_file=/etc/vsftpd/user_list
。
防火墙与安全组配置是关键步骤,首先开放FTP服务所需端口,执行以下命令:

firewall-cmd --permanent --add-service=ftp firewall-cmd --permanent --add-port=30000-31000/tcp firewall-cmd --reload
然后在阿里云ECS控制台的安全组规则中,添加入站规则:
- 类型:FTP(端口21)
- 类型:自定义TCP(端口范围30000-31000)
- 来源IP:设置为0.0.0.0/0(或限制为特定IP)
检查SELinux配置,若FTP用户无法上传文件,可能是SELinux限制导致,执行setsebool -P ftpd_full_access on
允许FTP相关访问,重启vsftpd服务systemctl restart vsftpd
,使用FTP客户端工具(如FileZilla)测试连接,输入服务器公网IP、用户名及密码,验证是否成功登录及文件传输。
以下是常见问题解答:
Q1: 连接FTP时提示“530 Login incorrect”如何解决?
A: 可能原因包括:用户名或密码错误;防火墙或安全组未开放21端口;SELinux阻止访问,建议检查用户密码是否正确,确认防火墙规则已添加firewall-cmd --add-service=ftp
,并执行getsebool -a | grep ftpd
查看SELinux状态,若显示ftpd_full_access --> off
,则需执行setsebool -P ftpd_full_access on
启用权限。

Q2: 如何限制FTP用户仅能访问指定目录?
A: 可通过以下两种方式实现:
- 创建虚拟用户:安装
db4-utils
,生成用户数据库文件,并在/etc/vsftpd/vsftpd.conf
中配置guest_enable=YES
和user_sub_token=$USER
,指定local_root=/data/ftp/$USER
。 - 修改用户主目录:使用
usermod -d /path/to/directory username
命令更改用户家目录,并确保目录权限为755
,所有者为FTP用户。