[2026-09-26] eagle: family/documents/vault-sync/2026-09-26-syncthing-clone-root-objects-acl-confusion.md family/how-to/vault-git-sync.md personal/plans/music-tags-review/music-tags-review.md personal/tech/music-tags-repair-truenas.md
This commit is contained in:
1 parent
44d2c48574
commit
3ebaca6e74
4 files changed
+221
-20
No files matched your search
+57
-2
@@ -4,12 +4,13 @@ type: log
|
||||
namespace: family
|
||||
tags: [vault, sync, syncthing, git, permissions, acl, nfsv4, root]
|
||||
date: 2026-09-26
|
||||
status: resolved
|
||||
---
|
||||
|
||||
# `obsidian-syncthing`: 4031 root-объект, битый remote, ACL/chown не стоит
|
||||
|
||||
**Когда:** 2026-09-26, разбор по запросу Alex «почему документ не доехал до телефона».
|
||||
**Статус:** диагностика завершена, **фиксы НЕ применены** — ждём решения Alex.
|
||||
**Статус:** ✅ **РЕШЕНО** — ACL с `nas_users` + INHERIT применён, синк работает (см. «РЕШЕНИЕ» ниже).
|
||||
|
||||
## Симптом
|
||||
|
||||
@@ -95,7 +96,61 @@ midclt call filesystem.getacl /mnt/RED_2TB/Edu > .../acl-edu-before-YYYYmmdd-HHM
|
||||
> POSIX-gid файла, а не ACE. Без смены gid группа не получает ничего. Менять gid надо через
|
||||
> `midclt filesystem.setacl` (root-контекст), а не `chgrp`/`chown` из шелла.
|
||||
|
||||
## Почему однократный `chown` не лечил
|
||||
## ✅ РЕШЕНИЕ (2026-09-26, после требования Alex «Да, ставь acl inherit»)
|
||||
|
||||
Alex отверг предложенные варианты и дал прямую команду: **«Да, ставь acl inherit»**.
|
||||
Выбран **вариант A** — ACL + INHERIT, применён на `/mnt/RED_2TB/storage/obsidian-syncthing`.
|
||||
|
||||
**Что сделано (по порядку):**
|
||||
|
||||
```bash
|
||||
# 1. бэкап ACL
|
||||
midclt call filesystem.getacl /mnt/RED_2TB/storage/obsidian-syncthing \
|
||||
> /home/truenas_admin/variantA_bk/acl-obsidian-syncthing-before-20260926-154827.json
|
||||
|
||||
# 2. скрипт read-modify-write (файлом, не инлайном) → scp на NAS → python3
|
||||
# payload: gid=3000 (nas_users), uid=950, recursive=true,
|
||||
# все ACE → FILE_INHERIT+DIRECTORY_INHERIT, stripacl=false
|
||||
# → job 25046 SUCCESS
|
||||
|
||||
# 3. remote клона
|
||||
git remote set-url origin /mnt/RED_2TB/storage/git/obsidian-vault.git
|
||||
```
|
||||
|
||||
**Результат (проверено ФАКТОМ):**
|
||||
|
||||
| | До | После |
|
||||
|---|---|---|
|
||||
| `nfs4xdr_getfacl` | `trivial_acl: true` | **`trivial_acl: false`** |
|
||||
| `group` | 950 | **3000** (`nas_users`) |
|
||||
| флаги ACE | `-------` (NOINHERIT) | **`fd-----`** (FILE+DIRECTORY_INHERIT) |
|
||||
| объекты от root | 4051 | **0** (все 4073 = `truenas_admin`) |
|
||||
| `git fetch` | падал | `Already up to date` |
|
||||
| новый файл `touch` | — | `truenas_admin:nas_users` ✅ |
|
||||
|
||||
**Наследование подтверждено:** `touch .inherit_test` и `mkdir .inherit_dir_test` внутри папки
|
||||
получили `truenas_admin:nas_users` (тестовые артефакты удалены после проверки).
|
||||
|
||||
**Нота доехала:** коммит с Mac `f2501dc` (`1-needs-decision.md`, разбор 28 файлов) найден в
|
||||
истории клона, поверх уже лежал `8efe5c8` от Taiga.
|
||||
|
||||
### 🔴 ГЛАВНЫЙ ПИТФОЛЛ: `midclt getacl` = КЭШ
|
||||
|
||||
Сразу после `setacl` скрипт делал верификацию через `midclt filesystem.getacl` — и получал
|
||||
**старые** значения (`trivial: True`, `gid: 950`, `NOINHERIT`), печатая ложный «VERIFY FAILED».
|
||||
Правка на диске при этом была уже применена.
|
||||
|
||||
> **Реальное состояние проверять только:** `nfs4xdr_getfacl <path>` (`trivial_acl: false`,
|
||||
> флаги `fd-----`) + `stat -c '%A %U:%G %n'` + фактический `touch` нового файла.
|
||||
> **Не откатывать и не повторять `setacl` по показаниям `getacl`.**
|
||||
|
||||
### Альтернативный вариант B (не использован, для истории)
|
||||
|
||||
`user: "950:950"` в taiga service — устранил бы корень (контейнер не от root), но риск:
|
||||
образ может требовать root для `/opt/data`. Оставлен как возможное усиление;
|
||||
текущий ACL-INHERIT закрывает последствия.
|
||||
|
||||
## ℹ️ Почему однократный `chown` не лечил (историческая справка)
|
||||
|
||||
Прошлый разовый `chown` объектов на `truenas_admin` чинил только **уже существующие** объекты.
|
||||
Следующий `git pull` от root снова рождал root-owned объекты — и `chown` приходилось повторять.
|
||||
|
||||
Reference in new issue
Block a user