☰
在 Ubuntu 上搭建 FTP 服务器
2026/10/1 15:53:35 网站建设 项目流程

📦 安装 vsftpd

sudo apt update
sudo apt install vsftpd -y

#确认vsftpd状态
sudo systemctl status vsftpd

#手动启动vsftpd
sudo systemctl start vsftpd

#设置vsftpd开机自启
sudo systemctl enable vsftpd

# 创建chroot_list文件
sudo touch /etc/vsftpd.chroot_list

👤 创建 FTP 用户和目录

为了安全,建议创建一个只能访问 FTP、不能 SSH 登录的专用用户。

创建用户并禁止 SSH 登录

sudo useradd -s /usr/sbin/nologin ftptest

创建 FTP 根目录

sudo mkdir -p /home/ftptest/FtpHome
sudo chown ftptest:ftptest /home/ftptest/FtpHome
sudo chmod 755 /home/ftptest/FtpHome

设置密码

sudo passwd ftptest

⚙️ 配置 vsftpd

基础配置/etc/vsftpd.conf ,如下:

# 监听配置 listen=YES listen_ipv6=NO # 匿名访问控制 anonymous_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO # 本地用户控制 local_enable=YES write_enable=YES local_umask=022 # 目录锁定 chroot_local_user=YES #允许被限制的用户家目录可写(解决 chroot 后无法写入的问题) allow_writeable_chroot=YES #设置 FTP 根目录 local_root=/home/ftptest/FtpHome # 日志 xferlog_enable=YES xferlog_file=/var/log/vsftpd.log # 被动模式端口范围 pasv_enable=YES pasv_min_port=40000 pasv_max_port=40100

⚙️ 配置 PAM

修改/etc/pam.d/vsftpd,如下,避免登录密码后提示拒绝:

#auth required pam_shells.so
auth required pam_unix.so
account required pam_unix.so

🔥 防火墙设置

查看端口21是否被占用

ss -tuln | grep 21

如果你启用了 ufw 防火墙,需要放行相关端口:

放行 FTP 控制端口 21

sudo ufw allow 21/tcp

放行被动模式端口范围

sudo ufw allow 40000:41000/tcp

重新加载防火墙

sudo ufw reload

🔄 重启服务并测试

sudo systemctl restart vsftpd

附:查看vsftpd日志

journalctl -u vsftpd --no-pager -n 50S

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询