fix(deploy): конфиг в /opt/security-alert-center/config (sac:sac)

Убирает ошибку Permission denied при каталоге /etc root:root.
This commit is contained in:
2026-05-26 20:59:44 +10:00
parent 38c137cbd3
commit 539126b75e
8 changed files with 35 additions and 39 deletions
+2 -2
View File
@@ -14,7 +14,7 @@
```
deploy/
env.native.example → /etc/security-alert-center/sac-api.env
env.native.example → /opt/security-alert-center/config/sac-api.env
systemd/sac-api.service → /etc/systemd/system/
nginx/sac.conf.example → /etc/nginx/sites-available/sac
```
@@ -106,7 +106,7 @@ curl -sS https://sac.kalinamall.ru/health
```bash
cd /opt/security-alert-center && sudo -u sac git pull
sudo -u sac backend/.venv/bin/pip install -r backend/requirements.txt
sudo -u sac bash -c 'set -a; source /etc/security-alert-center/sac-api.env; set +a; cd backend && .venv/bin/alembic upgrade head'
sudo -u sac bash -c 'set -a; source /opt/security-alert-center/config/sac-api.env; set +a; cd backend && .venv/bin/alembic upgrade head'
sudo systemctl restart sac-api
```
+25 -29
View File
@@ -118,17 +118,26 @@ sudo -u sac .venv/bin/pip install -r requirements.txt
---
## 6. Конфигурация `/etc/security-alert-center`
## 6. Конфигурация
Файл лежит **в каталоге приложения** (владелец `sac`) — так проще, чем права на `/etc/...`.
```bash
sudo mkdir -p /etc/security-alert-center
sudo cp /opt/security-alert-center/deploy/env.native.example /etc/security-alert-center/sac-api.env
sudo nano /etc/security-alert-center/sac-api.env
# Каталог и файл: группа sac должна иметь доступ (иначе Permission denied у пользователя sac)
sudo chown root:sac /etc/security-alert-center
sudo chmod 750 /etc/security-alert-center
sudo chown root:sac /etc/security-alert-center/sac-api.env
sudo chmod 640 /etc/security-alert-center/sac-api.env
sudo mkdir -p /opt/security-alert-center/config
sudo cp /opt/security-alert-center/deploy/env.native.example \
/opt/security-alert-center/config/sac-api.env
sudo nano /opt/security-alert-center/config/sac-api.env
sudo chown sac:sac /opt/security-alert-center/config/sac-api.env
sudo chmod 600 /opt/security-alert-center/config/sac-api.env
```
Если уже создавали `/etc/security-alert-center/sac-api.env` — перенесите:
```bash
sudo mkdir -p /opt/security-alert-center/config
sudo cp /etc/security-alert-center/sac-api.env /opt/security-alert-center/config/sac-api.env
sudo chown sac:sac /opt/security-alert-center/config/sac-api.env
sudo chmod 600 /opt/security-alert-center/config/sac-api.env
```
Обязательно задать:
@@ -146,29 +155,16 @@ sudo chmod 640 /etc/security-alert-center/sac-api.env
Проверка, что `sac` читает конфиг (должно быть без `Permission denied`):
```bash
sudo -u sac test -r /etc/security-alert-center/sac-api.env && echo OK
ls -la /opt/security-alert-center/config/sac-api.env
# должно быть: -rw------- sac sac
sudo -u sac test -r /opt/security-alert-center/config/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` — проверьте **каталог** (не только файл):
```bash
namei -l /etc/security-alert-center/sac-api.env
# у каталога security-alert-center должны быть root:sac и drwxr-x---
sudo chown root:sac /etc/security-alert-center
sudo chmod 750 /etc/security-alert-center
```
Разовый обход для миграции (от root, если срочно):
```bash
sudo bash -c 'set -a; source /etc/security-alert-center/sac-api.env; set +a; cd /opt/security-alert-center/backend && .venv/bin/alembic upgrade head'
sudo -u sac bash -c 'set -a; source /opt/security-alert-center/config/sac-api.env; set +a; .venv/bin/alembic upgrade head'
```
---
@@ -268,7 +264,7 @@ EOF
cd /opt/security-alert-center
sudo -u sac git pull
sudo -u sac backend/.venv/bin/pip install -r backend/requirements.txt
sudo -u sac bash -c 'set -a; source /etc/security-alert-center/sac-api.env; set +a; cd backend && .venv/bin/alembic upgrade head'
sudo -u sac bash -c 'set -a; source /opt/security-alert-center/config/sac-api.env; set +a; cd backend && .venv/bin/alembic upgrade head'
sudo systemctl restart sac-api
```
@@ -280,7 +276,7 @@ sudo systemctl restart sac-api
- [ ] ufw: 22, 80, 443
- [ ] PostgreSQL: БД `sac`, пользователь `sac`
- [ ] venv, зависимости установлены
- [ ] `/etc/security-alert-center/sac-api.env`, chmod 600
- [ ] `/opt/security-alert-center/config/sac-api.env`, владелец `sac:sac`, chmod 600
- [ ] `alembic upgrade head` без ошибок
- [ ] `sac-api` active (systemd)
- [ ] nginx + TLS
@@ -293,7 +289,7 @@ sudo systemctl restart sac-api
| Симптом | Действие |
|---------|----------|
| `sac-api.env: Permission denied` | `chown root:sac` и `chmod 750` на **каталог** `/etc/security-alert-center`, `chmod 640` на файл |
| `sac-api.env: Permission denied` | Конфиг в `/opt/security-alert-center/config/`, `chown sac:sac`, `chmod 600`. Не используйте `/etc/...` с каталогом `root:root` |
| `password authentication failed for user sac` | Пароль в `DATABASE_URL` ≠ пароль в PostgreSQL; или `.env` не прочитан (тогда берётся дефолт `sac:sac`). Исправить пароль: `sudo -u postgres psql -c "ALTER USER sac PASSWORD '...';"` и обновить `DATABASE_URL` |
| `database: error` / SQLAlchemy connect | `systemctl status postgresql`; проверить `DATABASE_URL` после успешного `source` |
| 401 ingest | ключ в `Authorization: Bearer`; проверить `SAC_BOOTSTRAP_API_KEY` |
+1 -1
View File
@@ -15,7 +15,7 @@
# см. полный чеклист в native-руководстве
sudo apt update && sudo apt install -y git postgresql nginx python3.12 python3.12-venv
sudo git clone https://git.kalinamall.ru/PapaTramp/security-alert-center.git /opt/security-alert-center
# … PostgreSQL, venv, /etc/security-alert-center/sac-api.env, systemd, nginx
# … PostgreSQL, venv, config/sac-api.env, systemd, nginx
```
## См. также