# Дампы бэкапов без группы `docker` у сервисных пользователей **Приоритет:** средний Группу `docker` (= root на хосте) убрали у всех сервисных пользователей, кроме трёх: `miniflux`, `gitea`, `outline`. Их `backup.sh` делает `docker compose exec` (pg_dump, `gitea dump`), а `files/backups/backup-all.py` запускает такие скрипты через `su --login `, то есть от имени самого приложения — без членства в группе дамп упадёт. Дампить снаружи докера нельзя: postgres порт не публикует, `gitea dump` живёт только внутри контейнера. Варианты, как развязать: - **A. sudo-обёртка на дамп.** Плейбук кладёт `/usr/local/sbin/backup--dump.sh` (root:root, 0755 — сам app_user его не перепишет) с единственным `docker compose exec …`, в sudoers — ` ALL=(root) NOPASSWD:` ровно на этот файл, а `backup.sh` дёргает его через `sudo`. Пользователь получает право на одну фиксированную команду вместо права на весь докер. Механизм в проекте уже обкатан: так `playbook-backups.yml` разрешает `primary_user` запускать `backup-all.py`. - **B. root-скрипты в оркестраторе.** Новый контракт в `backup-all.py`: если у приложения есть `backup-root.sh` с владельцем root — запускать его без `su`. Механизм один на всех, но от root пойдёт скрипт целиком, включая `keep-files.py`, и дампы станут root-овыми файлами в директориях приложения. - **C. оставить как есть** — три аккаунта как осознанное исключение, задокументированное в плейбуках. Предпочтение на момент записи — A. Связано: playbook-miniflux.yml, playbook-gitea.yml, playbook-outline.yml, files/*/backup.template.sh, files/backups/backup-all.py.