温馨提示×

为何ubuntu ftpserver传不了文件

小樊
57
2026-09-29 16:41:53
栏目: 智能运维

在 Ubuntu 上搭建的 FTP 服务器(常见为 vsftpd)能连上但传不了文件,通常不是网络问题,而是配置或权限问题。下面按最常见原因逐一说明,并给出排查和解决办法。


一、最常见原因汇总(先看这个)

现象 可能原因
能登录,但上传失败 目录权限不足
能登录,但列不出目录 被动模式(PASV)未配置
防火墙开着就传不了 被动端口未放行
使用 root 登录传不了 vsftpd 禁止 root
提示 550 / 553 写权限被禁用

二、vsftpd 常见配置问题(重点)

1️⃣ 上传目录权限不对(最常见)

错误示例:

/var/ftp ❌ 属于 root,且 755

解决:

sudo mkdir -p /srv/ftp
sudo chown ftp:ftp /srv/ftp
sudo chmod 755 /srv/ftp

如果是普通用户:

sudo chown 用户名:用户名 /home/用户名/ftp

2️⃣ vsftpd 禁止写操作

检查配置文件:

sudo nano /etc/vsftpd.conf

确保有以下内容:

write_enable=YES

❌ 如果看到:

write_enable=NO

改成 YES 并重启:

sudo systemctl restart vsftpd

3️⃣ 被动模式(PASV)未配置(非常常见)

很多客户端连得上,但传不了文件,就是因为 PASV。

在 /etc/vsftpd.conf 加:

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

然后开放防火墙:

sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp

4️⃣ 使用了 chroot 但目录不可写

如果你配置了:

chroot_local_user=YES

那 chroot 目录本身不能可写,否则登录失败或无法上传。

✅ 正确结构:

/home/user/ftp        # 755,不可写
/home/user/ftp/upload # 755/775,可写

三、防火墙 & SELinux(Ubuntu 一般不是 SELinux)

防火墙检查

sudo ufw status

确保:

  • 21 端口开放
  • PASV 端口开放

四、用户相关限制

❌ root 不能登录 FTP

vsftpd 默认禁止:

userlist_deny=YES

如需允许(不推荐):

userlist_deny=NO

五、快速自检清单 ✅

# 1. 服务是否运行
systemctl status vsftpd

# 2. 是否能登录
ftp localhost

# 3. 是否能 put 文件
put test.txt

# 4. 查看错误码
# 550 = 权限
# 553 = 目录不可写
# 425 = 被动端口问题

六、如果你愿意,我可以更直接帮你

你可以告诉我:

  1. 用的什么 FTP 服务(vsftpd?pure-ftpd?)
  2. 报错信息(550 / 425 / 553?)
  3. 是 本地用户 还是 匿名用户
  4. Ubuntu 版本

我可以一步一步帮你精确修好。

0 踩