提交 1a9135ec authored 作者: 陈泽健's avatar 陈泽健

docs(deploy): 添加权限统一脚本 setup_permissions.sh(解决容器 root 写出的 __pycache__ 属主为 root)

上级 a1140884
#!/bin/bash
# ============================================================
# 模块名称:setup_permissions.sh
# 模块描述:5.60 部署后权限统一脚本
# 修复容器(root)写出的 __pycache__/data/logs 属主为 root,
# 导致宿主机 ubains 用户 py_compile / 清理操作报
# Permission denied(Errno 13)的问题。
# 作者:czj(Claude Code 协助)
# 创建日期:2026-09-09
#
# 原理:
# - 容器内进程是 root,属主变更不影响其读写(root 绕过权限检查),无需重启容器
# - 借容器内 root 身份(docker exec)对挂载卷做 chown
# - 容器内没有 ubains 用户名,必须用数字 UID/GID
#
# 用法(5.60 上执行):
# bash /data/third_party/plat-auto-test/deploy/setup_permissions.sh
#
# 挂载对应关系(deploy/docker-compose.yml):
# 宿主机 $BASE/backend → 容器 /app
# 宿主机 $BASE/data → 容器 /app/data
# 宿主机 $BASE/logs → 容器 /app/logs
# 宿主机 $BASE/frontend/dist → 容器 /app/frontend/dist
# ============================================================
set -euo pipefail
BASE=/data/third_party/plat-auto-test
CONTAINER=plat-auto-test-app
UB_UID=$(id -u ubains)
UB_GID=$(id -g ubains)
echo "目标属主: ubains(${UB_UID}:${UB_GID})"
# 统一 chown(经容器内 root 执行):
# /app → backend 全部源码(含 __pycache__、.bak 等)
# /app/frontend/dist → 前端构建产物(宿主机 scp 热更新用)
# /app/data → 截图/报告(磁盘清理入口)
# /app/logs → 日志
docker exec "${CONTAINER}" chown -R "${UB_UID}:${UB_GID}" \
/app \
/app/data \
/app/logs
echo "=== 校验 ==="
ls -ld \
"${BASE}/backend/app/__pycache__" \
"${BASE}/frontend/dist" \
"${BASE}/data" \
"${BASE}/logs"
echo "完成:上述目录属主已统一为 ubains(容器 root 读写不受影响)"
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论