# Changelog — 2026-06-07 推送文件默认 www:755

## 摘要

文件推送（rsync）后远程文件保留 SSH 用户（多为 root）属主与源权限，导致站点目录下文件为 root，Web 进程（www）无法读写。

## 动机

用户反馈：「推送文件权限问题，推送过去的文件应该为 www 755 不是 root」。

## 变更

- `server/config.py`：新增 `NEXUS_RSYNC_PUSH_CHOWN`（默认 `www:www`）、`NEXUS_RSYNC_PUSH_CHMOD`（默认 `D755,F755`）
- `sync_engine_v2._rsync_push`：非 dry-run 时附加 `--chown` / `--chmod`（需对端 rsync 以 root 接收，与宝塔推送习惯一致）
- `tests/test_rsync_push_permissions.py`：默认值与非法 chown 拒绝

## 涉及文件

- `server/config.py`
- `server/application/services/sync_engine_v2.py`
- `tests/test_rsync_push_permissions.py`

## 迁移 / 重启

- 需重启 API / 重建 Docker 镜像
- 无 DB 迁移；可通过 `.env` 置空 `NEXUS_RSYNC_PUSH_CHOWN=` 关闭

## 验证

```bash
. venv/bin/activate && pytest tests/test_rsync_push_permissions.py -q
# 推送后子机: ls -la <target_path> 应为 www www，目录/文件 755
```
