[2026-10-06] eagle: family/how-to/htpc-system.md family/plans/red2tb-backup-acl-inherit-fix.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-06 18:24:05 +06:00
1 parent d657715904
commit bf626182da
2 files changed
+30 -1

No files matched your search

+1 -1
View File
@@ -454,7 +454,7 @@ XwaylandEisNoPrompt=true
3. Duck Game: `Documents/DuckGame/Profiles/*.pro` (5 профилей) — префикса DuckGame на HTPC нет.
4. Contra Operation Galuga: `LocalLow/WayForward Technologies/.../_savedata/savefile`.
5. Super Bomberman R 2: `LocalLow/Konami/SUPER BOMBERMAN R 2/<steamid>/GameData`.
6. Project64: `Documents/project64/Save/1080 SNOWBOARDING....sra` + `64..2_Cont_1.mpk`.
6. Project64: `Documents/project64/Save/1080 SNOWBOARDING....sra` + `64 Oozumou 2_Cont_1.mpk` (сумо-игра, ROM на HTPC есть, сейва нет; имя папки на Mac читается битым UTF-8 — копировать по glob `64*DC2BDD6B*`).
7. Kodi: эмуляторные сейвы `Roaming/Kodi/saves/` (Aladdin, Ghouls'n'Ghosts, Golden Axe II — уникальны; DKC2 покрыт retroarch .srm) + весь userdata (MyVideos121.db 8MB, guisettings, AKL/AEL DB) — Kodi на HTPC нет вообще.
8. BrawlhallaReplays (3 реплея) + Roaming/BrawlhallaAir (.sol профиль).
@@ -0,0 +1,29 @@
# RED_2TB/backup — inherit ACL fix (nas_users) — план
> Запрошено Alex 2026-10-06 (Mattermost): применить к `/mnt/RED_2TB/backup` тот же фикс,
> что делали для `Edu` (2026-09-23) и `storage/obsidian-syncthing` (2026-09-26).
> Цель: `truenas_admin` (uid 950) может писать в датасет backup (287G, личные бэкапы).
## План (5 шагов)
1. **Пре-чек** (read-only): `stat`, `nfs4xdr_getfacl`, `midclt filesystem.getacl`,
`touch` (ожидаем Permission denied), распределение `uid:gid` по дереву (до).
2. **Бэкап ACL** → `/mnt/RED_2TB/storage/acl-backup-before-<ts>.json` (паттерн Edu).
3. **Фикс** — скрипт на NAS (scp + python3, НЕ с Mac): read-modify-write dacl
(все ACE → `flags={"BASIC":"INHERIT"}`, `group@` полный grant, `id` сохранены),
ОДИН `filesystem.setacl` `{uid: <текущий корневой>, gid: 3000, acltype: NFS4,
options: {recursive: true, traverse: true, stripacl: false}}`, полл `core.get_jobs` до SUCCESS.
4. **Верификация**: `nfs4xdr_getfacl` → `trivial_acl: false`, `group 3000`, флаги `fd-----`;
`stat` → `root:nas_users drwxrwxr-x`; `touch` от truenas_admin → OK; `mkdir` + getacl
вложенного → `INHERITED: True`; распределение групп после.
5. **Обновить доки**: эта нота (итог), `red2tb-dataset-map` (строка backup).
## Питфоллы (из skill truenas-administration + vault truenas-nfs4-acl-and-arrmultiuser)
- `dacl` строить с нуля НЕЛЬЗЯ (нужен `id` в каждой ACE) — только read-modify-write.
- Флаги — строка `{"BASIC":"INHERIT"}`, не булев dict.
- `setacl` асинхронный — ждать job до `SUCCESS`, иначе ложный провал.
- `getacl` сразу после `setacl` врёт кэшем → верифицировать `nfs4xdr_getfacl`.
- `group@` = POSIX gid объекта → смена gid на 3000 ОБЯЗАТЕЛЬНА, иначе ACE даёт ничего.
- `uid`/`gid` в payload с `recursive:true` переписывают владельца всего дерева (287G) —
осознанно, тот же результат что у Edu (`root:nas_users` на всё дерево).