在Ubuntu系统中搭建FTP服务器是一个常见的需求,无论是个人文件共享还是企业数据传输,FTP都提供了便捷的文件传输解决方案,本文将详细介绍如何在Ubuntu上使用vsftpd(Very Secure FTP Daemon)搭建一个安全稳定的FTP服务器。

我们需要更新系统并安装vsftpd,打开终端,执行以下命令更新软件包列表:sudo apt update,然后安装vsftpd:sudo apt install vsftpd,安装完成后,启动vsftpd服务并设置为开机自启:sudo systemctl start vsftpd和sudo systemctl enable vsftpd,此时可以通过sudo systemctl status vsftpd检查服务状态,确保服务正在运行。
我们需要配置vsftpd以适应实际需求,vsftpd的主配置文件位于/etc/vsftpd.conf,建议先备份原配置文件:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak,然后使用sudo nano /etc/vsftpd.conf打开配置文件,进行以下关键修改:
- 允许匿名用户访问:将
anonymous_enable=YES取消注释,若禁止匿名访问则设为NO。 - 允许本地用户登录:确保
local_enable=YES已启用。 - 允许文件上传:设置
write_enable=YES。 - 限制用户只能在其主目录:添加
chroot_local_user=YES,增强安全性。 - 启用被动模式:添加
pasv_enable=YES和pasv_min_port=10000、pasv_max_port=10100,避免防火墙问题。
配置完成后保存文件,重启vsftpd服务:sudo systemctl restart vsftpd,为了确保FTP服务正常运行,需要配置防火墙规则,如果使用UFW防火墙,执行sudo ufw allow 20/tcp、sudo ufw allow 21/tcp和sudo ufw allow 10000:10100/tcp,然后启用防火墙:sudo ufw enable。

创建FTP专用用户是提升安全性的重要步骤,假设要创建用户名为ftpuser,执行sudo adduser ftpuser,根据提示设置密码和用户信息,为了限制用户访问目录,可以创建一个FTP专用目录并设置权限:sudo mkdir p /home/ftpuser/ftp,sudo chown nobody:nogroup /home/ftpuser/ftp,sudo chmod aw /home/ftpuser/ftp,然后为用户创建上传目录:sudo mkdir /home/ftpuser/ftp/files,sudo chown ftpuser:ftpuser /home/ftpuser/ftp/files,最后在/etc/vsftpd.conf中添加local_root=/home/ftpuser/ftp。
测试FTP服务器时,可以使用Windows资源管理器输入ftp://服务器IP,或使用命令行工具ftp 服务器IP,输入用户名和密码进行连接,如果遇到连接问题,可以检查/var/log/vsftpd.log日志文件排查错误。
以下是常见问题解答:

Q1: 如何禁止FTP用户访问系统其他目录?
A1: 在vsftpd.conf中确保chroot_local_user=YES已启用,同时检查allow_writeable_chroot=YES(仅适用于vsftpd 3.2.0以上版本),确保用户主目录权限设置正确,例如sudo chmod 755 /home/ftpuser。
Q2: FTP连接时提示“530 Login incorrect”如何解决?
A2: 首先确认用户名和密码正确,然后检查/etc/passwd中用户是否存在,以及/etc/shells是否包含/sbin/nologin(若用户被禁用登录),确保pam_service_name=vsftpd在配置文件中正确设置,且未启用userlist_enable=YES导致用户被拒绝。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/314457.html