温馨提示×

debian ftpserver为何无法上传

小樊
73
2026-09-12 17:05:51
栏目: 智能运维

在 Debian 上搭建的 FTP 服务器无法上传是比较常见的问题,通常不是“FTP 服务挂了”,而是权限 / 配置 / 防火墙 / SELinux 类机制导致的。下面按最常见原因逐一排查。


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

原因 现象
目录没有写权限 能登录,但上传报错 550 Permission denied
vsftpd 配置限制上传 能登录,但不能写
用户是 nologin / 家目录不对 登录成功但无目录可写
被动模式端口被防火墙挡 能登录,但 LIST / 上传卡住
磁盘满了 上传直接失败
chroot 限制导致写失败 500 OOPS 或无法写

二、vsftpd(Debian 最常见)

1️⃣ 目录权限问题(90% 的原因)

假设 FTP 用户是 ftpuser,上传目录是 /srv/ftp

ls -ld /srv/ftp

✅ 正确示例:

drwxr-xr-x ftpuser ftpuser /srv/ftp

❌ 错误示例(root 所有,ftp 用户不可写):

drwxr-xr-x root root /srv/ftp

修复:

chown ftpuser:ftpuser /srv/ftp
chmod 755 /srv/ftp

如果还要子目录可写:

chown -R ftpuser:ftpuser /srv/ftp

2️⃣ vsftpd 配置未允许上传

编辑:

sudo nano /etc/vsftpd.conf

确保有以下内容:

write_enable=YES
local_enable=YES

然后重启:

sudo systemctl restart vsftpd

⚠️ 如果 write_enable=NO,永远不能上传


3️⃣ chroot 导致无法上传(很常见)

如果配置了:

chroot_local_user=YES

那 FTP 根目录必须是不可写的,否则 vsftpd 会拒绝。

✅ 正确结构:

/srv/ftp        (755, 属主 root)
/srv/ftp/upload (755, 属主 ftpuser)

用户登录后在 upload 里上传。


4️⃣ 被动模式端口被防火墙挡

vsftpd 配置:

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

防火墙开放:

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

云服务器还要在安全组放行这些端口。


三、用户类型问题

FTP 用户是否是系统用户?

如果是:

ftpuser:x:1001:1001::/srv/ftp:/usr/sbin/nologin

✅ 没问题(nologin 可用 FTP)

但确保:

local_enable=YES

四、查看真实错误(非常重要)

在客户端用主动模式 + 详细日志:

ftp -d your.server.ip

或 FileZilla:

设置 → 调试 → 显示 raw command

常见错误含义:

  • 550 Permission denied → 权限
  • 500 OOPS → 配置错误
  • 425 Can't open data connection → 被动端口问题

五、快速自检清单 ✅

# 1. 服务在跑吗
systemctl status vsftpd

# 2. 能写吗
sudo -u ftpuser touch /srv/ftp/test

# 3. 磁盘满了吗
df -h

# 4. 配置对吗
grep -E "write_enable|local_enable|chroot" /etc/vsftpd.conf

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

你可以贴出:

  1. FTP 软件(vsftpd / proftpd / pure-ftpd)
  2. /etc/vsftpd.conf
  3. 报错信息(客户端截图或日志)
  4. Debian 版本

我可以直接告诉你是哪一行配置或权限错了。

0 踩