痛點拆解
① 全域預設目錄遭多專案寫入,技能快取與本機狀態互相污染。② 日誌打在單一檔案,稽核無法依專案切片。③ 重複使用寬權限權杖,外洩時影響所有佇列與頻道。
日誌與設定策略矩陣
先選型再落盤(下表可直接貼入審查紀要):
| 維度 | 獨立設定子樹 | 日誌獨立 APFS 卷 | 日誌同卷子路徑 |
|---|---|---|---|
| 隔離強度 | 高(路徑天然分界) | 高(配額與卸載) | 中(靠權限與輪替) |
| 維運成本 | 低 | 中 | 低 |
| 適用情境 | 預設必選 | 法遵或多租戶計費 | 小團隊成本敏感 |
步驟一|目錄骨架與權限
以 team_alpha/proj_ios 為例,群組名與專案一一對應:
sudo dseditgroup -o create proj_ios 2>/dev/null || true
sudo mkdir -p /srv/openclaw/{team_alpha/proj_ios/{config,logs},_quarantine}
sudo chown -R root:proj_ios /srv/openclaw/team_alpha/proj_ios
sudo chmod 0750 /srv/openclaw/team_alpha/proj_ios/config
sudo chmod 0770 /srv/openclaw/team_alpha/proj_ios/logs
檢查點:namei -l /srv/openclaw/team_alpha/proj_ios/config 每一層目錄應為 drwxr-x--- 且群組為 proj_ios。
步驟二|綁定每專案設定根
於 LaunchAgent 或 plist 風格啟動檔注入(變數名稱可依團隊現有模板對齊):
export OPENCLAW_CONFIG_ROOT=/srv/openclaw/team_alpha/proj_ios/config
export OPENCLAW_STATE_DIR=/srv/openclaw/team_alpha/proj_ios/config/state
install -d -m 0750 -g proj_ios "$OPENCLAW_STATE_DIR"
模板分層與密鑰仍走儲存庫渲染流程,細節見上文環境模板專文;此處僅確保執行時根不回落到使用者家目錄。
步驟三|日誌獨立卷或子路徑
子路徑模式(預設可採用):
export OPENCLAW_LOG_DIR=/srv/openclaw/team_alpha/proj_ios/logs
install -d -m 0770 -g proj_ios "$OPENCLAW_LOG_DIR"
# logrotate 片段:依專案檔案,保留 14~30 天
獨立卷模式:先將卷掛載到 /srv/openclaw/team_alpha/proj_ios/logs 再 chgrp proj_ios,便於在磁碟報表中直接依卷做配額。
步驟四|最小權限權杖
為每專案簽發僅告警或唯讀建置狀態的機器人權杖,關閉寫入儲存庫設定類 scope;輪替流程可對齊頻道告警與權杖輪替。密鑰檔落地仍建議 0440,並由單一服務帳號唯讀。
sudo install -m 0440 -g proj_ios secrets/proj_ios/notify.token \
/srv/openclaw/team_alpha/proj_ios/config/secrets/notify.token
sudo stat -f "%Sp %g" /srv/openclaw/team_alpha/proj_ios/config/secrets/notify.token
步驟五|檢查點與排錯
發布前後執行下列三項探測,失敗即回滾設定根或權限:
python3 - <<'PY'
import os
root = os.environ["OPENCLAW_CONFIG_ROOT"]
assert os.path.commonpath([root, "/Users"]) != "/Users", "fallback home"
PY
find "$OPENCLAW_LOG_DIR" -maxdepth 1 -type f -name '*.log' -ls
test -w "$OPENCLAW_LOG_DIR" && echo "log_dir_writable"
若日誌出現在其他專案子樹,優先查是否繼承錯誤的 OPENCLAW_LOG_DIR;若遭權限拒絕,核對行程補充群組是否包含 proj_ios。
可引用門檻
- 設定目錄 0750、密鑰檔 0440,服務帳號不加入專案外群組。
- 文字日誌保留 十四至三十天,單檔超過 二百 MB 強制輪替。
- 權杖 scope 僅保留傳送訊息與讀取執行狀態兩類,預設關閉儲存庫管理。
小結與站內導覽
請將上述檢查點寫入發布單,並與佇列參數類文章交叉驗證。更多 OpenClaw 主題見 OpenClaw 索引;首頁、幫助中心、部落格列表皆可免登入瀏覽。