From 6d33669ac23fe17aeb9343a4fad9b7d48af7da8d Mon Sep 17 00:00:00 2001 From: PTah Date: Tue, 26 May 2026 20:53:10 +1000 Subject: [PATCH] =?UTF-8?q?fix(docs):=20sac-api.env=20chmod=20640=20root:s?= =?UTF-8?q?ac=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8F=20sac?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/env.native.example | 4 ++-- docs/install-ubuntu-24.04-native.md | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/deploy/env.native.example b/deploy/env.native.example index 894ca9c..25c9dac 100644 --- a/deploy/env.native.example +++ b/deploy/env.native.example @@ -1,6 +1,6 @@ # Native (systemd): скопировать в /etc/security-alert-center/sac-api.env -# chmod 600 /etc/security-alert-center/sac-api.env -# chown root:sac /etc/security-alert-center/sac-api.env +# sudo chown root:sac /etc/security-alert-center/sac-api.env +# sudo chmod 640 /etc/security-alert-center/sac-api.env DATABASE_URL=postgresql+psycopg2://sac:CHANGE_ME_POSTGRES_PASSWORD@127.0.0.1:5432/sac diff --git a/docs/install-ubuntu-24.04-native.md b/docs/install-ubuntu-24.04-native.md index c52d5ca..bfcbec0 100644 --- a/docs/install-ubuntu-24.04-native.md +++ b/docs/install-ubuntu-24.04-native.md @@ -124,13 +124,15 @@ sudo -u sac .venv/bin/pip install -r requirements.txt sudo mkdir -p /etc/security-alert-center sudo chmod 750 /etc/security-alert-center sudo cp /opt/security-alert-center/deploy/env.native.example /etc/security-alert-center/sac-api.env -sudo chmod 600 /etc/security-alert-center/sac-api.env sudo nano /etc/security-alert-center/sac-api.env +# Права: читает пользователь sac (systemd и alembic), не «весь мир» +sudo chown root:sac /etc/security-alert-center/sac-api.env +sudo chmod 640 /etc/security-alert-center/sac-api.env ``` Обязательно задать: -- `DATABASE_URL` — с паролем PostgreSQL из шага 4 +- `DATABASE_URL` — с паролем PostgreSQL из шага 4 (если в пароле есть `#`, `@`, `%` — возьмите значение в **кавычки**: `DATABASE_URL="postgresql+psycopg2://..."`) - `JWT_SECRET` — `openssl rand -hex 32` - `SAC_PUBLIC_URL` — `https://sac.kalinamall.ru` - `SAC_BOOTSTRAP_API_KEY` — `python3.12 -c "import secrets; print('sac_'+secrets.token_urlsafe(32))"` @@ -140,11 +142,21 @@ sudo nano /etc/security-alert-center/sac-api.env ## 7. Миграции БД +Проверка, что `sac` читает конфиг (должно быть без `Permission denied`): + +```bash +sudo -u sac test -r /etc/security-alert-center/sac-api.env && echo OK +``` + +Миграции: + ```bash cd /opt/security-alert-center/backend sudo -u sac bash -c 'set -a; source /etc/security-alert-center/sac-api.env; set +a; .venv/bin/alembic upgrade head' ``` +Если снова `Permission denied` — повторите права из §6: `chown root:sac`, `chmod 640` на `sac-api.env`. + --- ## 8. systemd @@ -267,7 +279,8 @@ sudo systemctl restart sac-api | Симптом | Действие | |---------|----------| -| `database: error` | `journalctl -u sac-api`; проверить `DATABASE_URL`, `systemctl status postgresql` | +| `sac-api.env: Permission denied` | `sudo chown root:sac /etc/security-alert-center/sac-api.env && sudo chmod 640 ...` | +| `database: error` / SQLAlchemy connect | Переменные не подгрузились — см. выше; проверить `DATABASE_URL`, `psql` от пользователя `sac` не нужен — проверьте URL вручную; `systemctl status postgresql` | | 401 ingest | ключ в `Authorization: Bearer`; проверить `SAC_BOOTSTRAP_API_KEY` | | 502 от nginx | API не слушает: `ss -lntp \| grep 8000`, `systemctl restart sac-api` | | Schema errors 422 | путь `EVENT_SCHEMA_PATH`, наличие файла schema |