Files
Nexus/docs/changelog/2026-06-01-remote-write-ssh-fallback.md
2026-07-08 22:31:31 +08:00

30 lines
1.0 KiB
Markdown

# 2026-06-01 远程写入 SFTP 权限回退 SSH tee/mv
## 摘要
解决编辑器保存时报 `SFTP 写入失败: Permission denied`:在 SFTP 无文件写权限但目录可写(或需 sudo)时,自动回退 SSH `tee`、临时文件 `mv` 覆盖、以及 `sudo -n`
## 动机
许多生产文件属主为 root、权限 644,SFTP 无法直接 `open(wb)`,但目录可写时可通过 `mv` 替换;部分环境需免密 sudo。
## 涉及文件
| 文件 | 变更 |
|------|------|
| `server/infrastructure/ssh/asyncssh_pool.py` | `remote_write_bytes()` |
| `server/api/sync_v2.py` | upload / write-file 使用统一写入 |
## 迁移 / 重启
`supervisorctl restart nexus`
## 验证方式
1. 编辑 root 属主且目录可写的配置文件 → 保存成功。
2. 若仍失败,在目标机为 SSH 用户配置对该路径的写权限或 `NOPASSWD: /usr/bin/tee, /usr/bin/mv`
## 补充(同日)
- SSH `tee` 回退时 `conn.run(input=bytes)``encoding=None`,否则报 `utf_8_encode() argument 1 must be str, not bytes`