#!/usr/bin/env bash # 一次性安装(可重复执行):创建专用用户 agentsvc、目录与权限、systemd 服务、agent-claude 命令。 # 用法:sudo deploy/install.sh set -euo pipefail cd "$(dirname "$0")/.." ROOT=/srv/agent-server SVC=agentsvc [ "$(id -u)" = 0 ] || { echo "请用 sudo 运行" >&2; exit 1; } if ! id "$SVC" &>/dev/null; then useradd --system --home-dir "$ROOT/home" --no-create-home --shell /usr/sbin/nologin "$SVC" echo "已创建用户 $SVC" fi # 程序与共享资源:root 所有、服务只读(Agent 无法篡改自身代码、Python 环境和技能) install -d -o root -g root -m 0755 "$ROOT" "$ROOT/app" "$ROOT/runtime" "$ROOT/skills" chown -R root:root "$ROOT/app" "$ROOT/runtime" "$ROOT/skills" chmod -R a+rX "$ROOT/runtime" "$ROOT/skills" # 服务数据:只有 agentsvc 可访问(含 CLI 登录态、数据库、会话工作区) for d in home data managed-skills workspaces logs; do install -d -o "$SVC" -g "$SVC" -m 0700 "$ROOT/$d" chown -R "$SVC:$SVC" "$ROOT/$d" done # 资料库:agentsvc 组可读写,管理员加入该组后可以直接往里放资料 install -d -o "$SVC" -g "$SVC" -m 2770 "$ROOT/knowledge" chown -R "$SVC:$SVC" "$ROOT/knowledge" chmod -R g+rwX "$ROOT/knowledge" if [ -n "${SUDO_USER:-}" ] && [ "$SUDO_USER" != root ]; then usermod -aG "$SVC" "$SUDO_USER" echo "已把 $SUDO_USER 加入 $SVC 组(重新登录后生效,用于往资料库放文件)" fi install -m 0644 deploy/agent-server.service /etc/systemd/system/agent-server.service install -m 0755 deploy/agent-claude /usr/local/bin/agent-claude install -m 0755 deploy/agent-codex /usr/local/bin/agent-codex systemctl daemon-reload systemctl enable agent-server >/dev/null echo "安装完成。下一步:deploy/deploy.sh 部署程序,然后执行 agent-claude 并输入 /login 登录。"