在 Ubuntu 上搭建 FTP 服务器

📦 安装 vsftpd

sudo apt update

sudo apt install vsftpd -y

sudo systemctl status vsftpd #确认状态

sudo systemctl start vsftpd #手动启动

sudo systemctl enable vsftpd #设置开机自启

👤 创建 FTP 用户和目录

出于安全考虑,建议创建一个专用用户,该用户仅能访问 FTP,无法通过 SSH 登录系统。

创建 FTP 根目录

sudo mkdir -p /home/FtpHome

创建用户并禁止 SSH 登录

sudo useradd -d /home/ftptest/FtpHome -s /usr/sbin/nologin ftptest

设置密码

sudo passwd ftptest

创建可读写的子目录并设置权限

sudo mkdir -p /home/ftptest/FtpHome

sudo chown ftpuser:ftpuser /home/ftptest/FtpHome

sudo chmod 755 /home/ftptest /home/ftptest/FtpHome

⚙️ 配置 vsftpd

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

anonymous_enable=NO:禁止匿名登录

local_enable=YES:允许本地用户登录

write_enable=YES:允许上传文件

chroot_local_user=YES:限制用户只能访问自己的家目录

allow_writeable_chroot=YES:允许被限制的用户家目录可写(解决 chroot 后无法写入的问题)

local_root=/home/FtpHome:设置 FTP 根目录

⚙️ 配置 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

相关推荐
ZMacros1 小时前
Live-build方法构建debian和ubuntu
linux·ubuntu·debian
byte轻骑兵1 小时前
【BlueZ 】netlink 在 BlueZ 中的应用:用户态与内核态的配置消息传递
linux·bluez·电脑蓝牙·嵌入式蓝牙
xbzb1 小时前
Nginx 反向代理总 404?Location 匹配与 proxy_pass 尾斜杠避坑手册
linux·运维·nginx·虚拟主机
Elastic 中国社区官方博客1 小时前
14 个 alerts,1 个 incident:使用 Elasticsearch 中的 ES|QL 衡量 alerting rule 噪声
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索
Lsetea1 小时前
OpenSSL报permitted subtree violation:证书SAN与CA名称约束排查
运维·https·ssl证书·openssl·证书链
资深技术分享员1 小时前
遗留系统——把“改不动的老系统“接过来
java·服务器·数据库
ShayneLee81 小时前
Nginx只开一个端口!能做什么?(一)
运维·nginx
万联WANFLOW2 小时前
Docker Hub 镜像拉取慢、timeout 的排查方法
运维·docker·云原生·容器·eureka
Julien20042 小时前
CGroups 资源控制组
linux·运维·服务器·ssh·学习方法