core.mount
Управление точками монтирования и записями /etc/fstab.
core.mount управляет двумя вещами независимо: записью в /etc/fstab (persist через reboot) и фактическим монтированием (runtime). present держит обе стороны сразу (запись в fstab + смонтировано), absent обе снимает; mounted и unmounted трогают только runtime, не касаясь fstab. Текущий статус читается через findmnt, все состояния идемпотентны. Требует root.
Требования
- Rootтребуется
- Сторона
soul-side - Коллекция
soulstack.system - Категория
system
run_as_rootexec_subprocessfs_write_rootСостояния
core.mount.present — Запись есть в /etc/fstab И ФС смонтирована (persist + runtime).
Изменился fstab (запись добавлена или обновлена), либо ФС не была смонтирована и смонтирована сейчас.
Запись уже в fstab и ФС уже смонтирована — оба условия совпали.
Параметры
| Параметр | Тип | Обяз. / дефолт | Описание |
|---|---|---|---|
path | string | required | Точка монтирования (target). |
source | string | required | Источник (device/UUID/сетевой ресурс). |
fstype | string | required | Тип ФС (ext4/nfs/…). |
opts | string | optional | Опции монтирования (default "defaults"). |
Пример — Персистентный маунт data-тома
- name: Mount data volume persistently module: core.mount.present params: path: /data source: /dev/sdb1 fstype: ext4 opts: "defaults,noatime"Output
| Поле | Тип | Описание |
|---|---|---|
path | string | |
source | string | |
fstype | string | |
mounted | true | |
in_fstab | true |
core.mount.absent — ФС размонтирована И запись удалена из /etc/fstab.
Запись была в fstab и удалена, либо ФС была смонтирована и размонтирована.
Записи в fstab не было и ФС не смонтирована.
Параметры
| Параметр | Тип | Обяз. / дефолт | Описание |
|---|---|---|---|
path | string | required | Точка монтирования (target). |
Пример — Размонтировать и убрать запись fstab
- name: Unmount and drop fstab entry module: core.mount.absent params: path: /dataOutput
| Поле | Тип | Описание |
|---|---|---|
path | string | |
mounted | false | |
in_fstab | false |
core.mount.mounted — ФС смонтирована «как есть», без правки fstab (runtime-mount).
ФС не была смонтирована и смонтирована сейчас.
ФС уже смонтирована.
Параметры
| Параметр | Тип | Обяз. / дефолт | Описание |
|---|---|---|---|
path | string | required | Точка монтирования (target). |
source | string | required | Источник (device/UUID/сетевой ресурс). |
fstype | string | required | Тип ФС (ext4/nfs/…). |
opts | string | optional | Опции монтирования (default "defaults"). |
Пример — Runtime-маунт только на этот прогон
- name: Mount scratch volume for this run only module: core.mount.mounted params: path: /mnt/scratch source: /dev/sdc1 fstype: ext4Output
| Поле | Тип | Описание |
|---|---|---|
path | string | |
mounted | true |
core.mount.unmounted — ФС размонтирована, без удаления записи из fstab (запись остаётся).
ФС была смонтирована и размонтирована.
ФС уже размонтирована.
Параметры
| Параметр | Тип | Обяз. / дефолт | Описание |
|---|---|---|---|
path | string | required | Точка монтирования (target). |
Пример — Размонтировать, не трогая fstab
- name: Unmount without touching fstab module: core.mount.unmounted params: path: /dataOutput
| Поле | Тип | Описание |
|---|---|---|
path | string | |
mounted | false |
Заметки
- present и absent трогают обе оси (fstab + runtime); mounted и unmounted — только runtime, запись fstab не касаются.
- Ошибочный present пишет persistent-запись fstab и пытается смонтировать источник при каждой загрузке — цена ошибки в source/opts повторяется на каждом boot, в отличие от разового mounted.
- Mount-point создаётся при монтировании, если каталога нет (mkdir -p, mode 0755).
- Поля dump и pass в fstab фиксированы как 0 0 (параметрами не управляются); строка записи — <source> <path> <fstype> <opts> 0 0.
- fstab правится preserve-by-default: атомарно (temp+rename), с сохранением существующих mode и владельца; owner/group fstab параметрами не принимаются.
- Требует root: mount / umount и правка /etc/fstab.
Безопасность и умолчания
- Монтирование недоверенного источника (особенно сетевого NFS/SMB) — главный риск: модуль доверяет содержимому смонтированной ФС. source под контролем атакующего может подсунуть setuid-файлы или symlink за пределы mount-point.
- source, path, fstype, opts должны приходить от автора Destiny/scenario, а не из недоверенного ввода.
- Защиту от setuid/устройств задаёт сам автор через opts (nosuid,nodev,noexec) — модуль их не навязывает (default defaults).
- DoS через опции и источник: жёсткий hard NFS-mount на недоступный хост зависает и блокирует обращающиеся к mount-point процессы; tmpfs без size= исчерпает память.
- Инъекция аргументов закрыта: позиционные source/path отделяются -- от опций mount/umount, shell не участвует.