在Linux系统中搭建FTP服务器通常使用vsftpd(Very Secure FTP Daemon)软件,它以安全性高、性能稳定著称,以下是详细搭建步骤:

更新系统软件包列表并安装vsftpd,以Ubuntu/Debian系统为例,执行sudo apt update && sudo apt install vsftpd -y;对于CentOS/RHEL系统,使用sudo yum update && sudo yum install vsftpd -y,安装完成后,启动服务并设置开机自启:sudo systemctl start vsftpd和sudo systemctl enable vsftpd。
接下来配置vsftpd,核心配置文件位于/etc/vsftpd.conf,建议先备份原文件:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak,然后使用sudo nano /etc/vsftpd.conf编辑文件,关键参数设置如下:
| 参数 | 值 | 说明 |
|---|---|---|
| anonymous_enable | NO | 禁止匿名访问,提升安全性 |
| local_enable | YES | 允许本地用户登录 |
| write_enable | YES | 启用写权限 |
| chroot_local_user | YES | 限制用户只能访问自家目录 |
| allow_writeable_chroot | YES | 允许被限制在主目录的用户写入 |
| pasv_min_port | 60000 | 被动模式最小端口 |
| pasv_max_port | 61000 | 被动模式最大端口 |
| user_sub_token | $USER | 动态匹配用户名 |
| local_root | /home/$USER | 用户主目录路径 |
配置完成后,创建FTP用户并设置密码,例如创建用户ftpuser:sudo useradd -m -s /bin/bash ftpuser,sudo passwd ftpuser,若需限制用户仅能通过FTP访问,可修改其shell为/usr/sbin/nologin:sudo usermod -s /usr/sbin/nologin ftpuser。
防火墙设置是关键步骤,在Ubuntu中执行sudo ufw allow 20/tcp、sudo ufw allow 21/tcp及被动模式端口范围sudo ufw allow 60000:61000/tcp;CentOS中使用sudo firewall-cmd --permanent --add-service=ftp和sudo firewall-cmd --permanent --add-port=60000-61000/tcp,最后重载防火墙sudo firewall-cmd --reload。

重启vsftpd服务使配置生效:sudo systemctl restart vsftpd,使用netstat -tlnp | grep ftp检查端口监听状态,或通过客户端工具(如FileZilla)测试连接,若遇到问题,可查看日志sudo tail -f /var/log/vsftpd.log排查。
相关问答FAQs:
-
Q: 如何限制FTP用户只能访问指定目录,无法切换到上级目录?
A: 在vsftpd.conf中确保chroot_local_user=YES已启用,同时检查allow_writeable_chroot=YES(若vsftpd版本高于3.2.0),对于旧版本,需在用户主目录创建.ftpchroot文件或设置chroot_list_file参数指定用户列表文件。 -
Q: FTP连接时提示“530 Login incorrect”如何解决?
A: 首先确认用户名密码正确,检查/etc/vsftpd.conf中local_enable=YES是否开启,若使用虚拟用户,需确保pam_service_name=vsftpd.pam配置正确,并验证PAM认证文件/etc/pam.d/vsftpd是否存在且未被注释,检查用户是否被列入/etc/vsftpd.ftpusers(禁止登录用户列表)或/etc/vsftpd.user_list(根据配置决定是否禁止)。
(图片来源网络,侵删)
