Files
Nexus/docs/changelog/2026-06-11-files-upload-www-permissions.md
T
Nexus Agent 4e117c04ea feat(files): 上传后自动 chown www:www 与文件 chmod
复用推送的 RSYNC_PUSH 配置,上传成功即 SSH 修正属主/权限;失败时仍保留文件并返回 warning。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-11 18:23:31 +08:00

1.4 KiB
Raw Blame History

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 部署

验证

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

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