ServerBox SFTP 上传下载权限不足怎么解决
常见 SFTP 错误
| 错误信息 | 含义 | 典型场景 |
|---|---|---|
| Permission denied | 服务器拒绝了这个操作 | 没有写权限 |
| 没有这样的文件或目录 | 路径写错了或中间有目录不存在 | 目录路径拼写错误 |
| 只读文件系统 | 挂载点被以只读方式挂载 | /boot、/cdrom、故障时的根分区 |
| 磁盘配额超限 | 用户磁盘用满了 | 家用 VPS 常见 |
| 连接被服务器关闭 | SSH 会话被服务器断开 | timeout、内存不足 |
Permission denied 排查流程
上传到普通用户目录(正常情况)
如果你用 deploy 用户上传到 /home/deploy/app/:
- 在 ServerBox SFTP 里右键目标目录 → 权限
- 确认所有者是 deploy,权限至少 drwxr-xr-x
- 所有者对该目录有写权限就能上传
上传到其他用户的目录
比如你用 deploy 想写 /var/www/html/(属主是 www-data):
- 不能直接写——deploy 对 www-data 的目录没有写权限
- 方案一:用 root 用户在 ServerBox 里连接,然后上传(最简单但不够安全)
- 方案二:让 www-data 组里的用户写:
sudo chown -R deploy:www-data /var/www/html && sudo chmod -R g+rw /var/www/html - 方案三:先上传到
/tmp(任何人可写),然后在 SSH 终端里 sudo mv 到目标目录
修改系统配置文件
比如想改 /etc/nginx/nginx.conf:
- 用非 root 用户肯定 Permission denied
- 在 ServerBox SFTP 里直接操作不了
- 得在 SSH 终端里 sudo nano 或 sudo vi 编辑
- 或者上传到
/tmp,SSH 终端里 sudo cp 覆盖
只读文件系统
有时服务器磁盘出现故障,内核会把根分区以只读方式挂载(防止写坏更多数据):
- 这种情况下什么都写不了
- 先 SSH 进去确认:
mount | grep ' on / ' - 如果是 ro(只读),服务器磁盘可能有问题——该备份数据换盘了
磁盘空间满了
df -h 确认一下:
$ df -h
/dev/vda1 20G 18G 0B 100% /
磁盘真满了的话:
- SSH 进去
du -sh /var/log/* | sort -rh | head -10找大文件 - Docker 容器堆积了:
docker system prune -af - 临时文件:
rm -rf /tmp/* - ServerBox 磁盘监控面板应该早就标红提醒了
SFTP 连接不稳定
上传大文件中途断掉:
- 检查网络:用 ServerBox 的 Ping 工具 Ping 服务器看丢包率
- 换稳定网络环境再传
- 如果是服务器端 SSH timeout:调
/etc/ssh/sshd_config里的ClientAliveInterval加大 - ServerBox 支持断点续传——重新传同一个文件时会从断点继续,不用从头开始