Files
Nexus/docs/changelog/2026-06-07-rsync-push-www-permissions.md
T
Nexus Agent f12a0b6a36 fix(sync): rsync 推送后设置远程属主 www 与权限 755
推送默认 --chown=www:www --chmod=D755,F755,避免文件落盘为 root。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 02:23:43 +08:00

1.1 KiB
Raw Blame History

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= 关闭

验证

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