# 2026-06-11 文件管理上传后自动 www 权限

## 摘要

文件管理上传完成后，自动对远端文件执行与推送相同的 `chown www:www` 与文件 `chmod`（默认 `755`，来自 `NEXUS_RSYNC_PUSH_CHOWN` / `NEXUS_RSYNC_PUSH_CHMOD`）。

## 动机

上传文件默认属主常为 SSH 登录用户（如 root），与站点运行用户 `www` 不一致，导致 Web 无法读写。推送已用 rsync 权限参数统一属主，上传路径此前缺失同类修正。

## 涉及文件

- `server/utils/files_upload_permissions.py` — 解析 push 配置并 SSH chown/chmod
- `server/api/sync_v2.py` — `_sftp_upload_one` 写入后调用 fixup，响应与审计带 `permission_fixup`
- `frontend/src/composables/files/useFilesActions.ts` — 权限修正失败时 warning 提示
- `tests/test_files_upload_permissions.py` — 单元测试

## 配置

与推送共用环境变量（默认已启用）：

- `NEXUS_RSYNC_PUSH_CHOWN=www:www`
- `NEXUS_RSYNC_PUSH_CHMOD=D755,F755`（上传取 `F755` → 文件 `755`）

置空两者则跳过上传后权限修正。

## 迁移 / 重启

- 无需数据库迁移
- 需重启 API 容器使后端生效；前端需重新 build 部署

## 验证

```bash
pytest tests/test_files_upload_permissions.py -q
bash scripts/local_verify.sh
```

浏览器：文件管理上传 → `ls -la` 应显示 `www www` 及预期 mode；若 sudo 白名单不足，界面 warning 且上传仍成功。
