| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- #!/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 登录。"
|