Files
obsidian-vault/family/plans/red2tb-backup-acl-inherit-fix.md
T
2026-10-15 09:50:58 +00:00

2.4 KiB
Executable File
Raw Blame History

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 на всё дерево).