Безопасность NAS и права
> Исходные требования, сохранённые по темам. Рабочие команды и отличия реализации — в руководстве. Концептуальные примеры ниже не являются готовыми конфигурационными файлами.
7.1 Никогда не использовать
chmod -R 777 /mnt/omv/work/SMTP
или:
chmod 777
Это запрещено.
---
7.2 Сначала проверить NFS
До запуска Docker:
findmnt -T /mnt/omv/work/SMTP -o TARGET,SOURCE,FSTYPE,OPTIONS
Также:
mountpoint /mnt/omv/work/SMTP
Ожидается:
/mnt/omv/work/SMTP is a mountpoint
Для NFS обязательно проверить наличие:
hard
Если присутствует soft, PostgreSQL туда запускать нельзя.
На OMV/NFS-сервере export должен использовать синхронную запись (sync). Это особенно важно для PostgreSQL.
Желательные клиентские ограничения:
hard
_netdev
nosuid
nodev
noexec также можно использовать, если в этой директории не предполагается запускать бинарники.
---
7.3 Stalwart
Официальный контейнер использует:
UID 2000
Поэтому:
data/stalwart-etc
data/blobs
должны принадлежать UID/GID, под которым работает Stalwart.
Например:
chown 2000:2000 data/stalwart-etc
chown 2000:2000 data/blobs
chmod 750 data/stalwart-etc
chmod 750 data/blobs
Если NFS использует root_squash и chown с kotik-serv не проходит, владельца нужно выставлять на самом OMV, по реальному пути NFS export.
---
7.4 PostgreSQL
Не нужно угадывать UID контейнера.
После выбора конкретного образа выполнить:
docker run --rm postgres:17-alpine id postgres
Полученный numeric UID/GID назначить каталогу:
/mnt/omv/work/SMTP/data/postgres
на стороне NAS.
Права:
0700
Только PostgreSQL должен иметь доступ к своему PGDATA.
---
7.5 Secrets
Директория:
/mnt/omv/work/SMTP/secrets
Права:
chmod 700 secrets
chmod 600 secrets/*
Секреты не добавлять непосредственно в docker-compose.yml.
Также:
.env
должен иметь:
0600