Rozbieżność uprawnień występuje, gdy dane Home Assistant nadal są dostępne, ale proces, który obecnie je montuje, widzi inne ustawienia właściciela, mapowania UID/GID, tryby dostępu lub kontekst bezpieczeństwa niż proces, który je utworzył. Problem często pojawia się po migracji hosta, przywróceniu danych, zmianie trybu Dockera, skopiowaniu danych na NAS lub ręcznym użyciu poleceń chown/chmod.
Zapobiegaj temu, dokumentując oczekiwany model montowania i własności przed wprowadzeniem zmian, zachowując metadane podczas kopiowania oraz testując dostęp zarówno do odczytu, jak i zapisu po odtworzeniu. Nie rozwiązuj każdego problemu za pomocą chmod -R 777; to ukrywa niezgodność i osłabia model odzyskiwania.
Udokumentuj granicę pamięci masowej przed zmianą uprawnień
Najpierw ustal, czy /config jest wolumenem zarządzanym przez Dockera, montowaniem wiązanym systemu Linux, montowaniem sieciowym czy ścieżką wewnątrz maszyny wirtualnej. Właściwa strategia nadawania własności zależy od tego, która warstwa faktycznie zarządza plikami.
Aktualne wytyczne instalacji Home Assistant w kontenerze konkretyzują tę umowę dotyczącą pamięci masowej: wybrany folder hosta jest montowany w /config z dostępem do odczytu i zapisu. Zapisz dokładną ścieżkę źródłową, punkt montowania i tryb dostępu, zamiast polegać wyłącznie na nazwie folderu.
Zapisz również, czy Home Assistant działa przez standardowego Dockera, Dockera bez uprawnień roota, przestrzeń nazw użytkownika z remapowaniem czy menedżera kontenerów NAS. Identyfikatory numeryczne widoczne wewnątrz i na zewnątrz kontenera mogą nie być takie same.
Mapowanie UID i GID może się zmienić bez przenoszenia plików
Folder może pozostać pod tą samą ścieżką hosta, podczas gdy efektywne mapowanie użytkowników zmieni się w tle. Jest to częste przy przechodzeniu z Dockera uruchamianego z uprawnieniami roota na Dockera bez tych uprawnień, włączaniu remapowania przestrzeni nazw użytkownika lub przywracaniu danych na hoście z innymi kontami lokalnymi.
Aktualna dokumentacja mapowania UID/GID w Dockerze pokazuje, że tryby rootless i przestrzeni nazw użytkownika tłumaczą tożsamości kontenerów na inne identyfikatory hosta. Plik, który na jednym hoście ma prawidłowego właściciela, może więc stać się niezapisywalny po zmianie modelu wdrożenia.
Porównuj numeryczne informacje o właścicielu za pomocą ls -ln lub równoważnych narzędzi, zamiast polegać wyłącznie na nazwach kont, które na nowym hoście mogą odpowiadać innym numerom.
Zachowaj metadane podczas kopiowania danych Home Assistant
Narzędzie migracyjne lub graficzne kopiowanie plików może zachować zawartość, ale nie własność, bity trybu, listy ACL, atrybuty rozszerzone ani etykiety bezpieczeństwa. Może to sprawić, że pliki YAML będą czytelne, podczas gdy bazy danych, ukryte dane, certyfikaty lub katalogi potrzebne do zapisu przestaną później działać.
Używaj metody kopiowania, która zachowuje metadane faktycznie wykorzystywane przez Twoją platformę. Po transferze porównaj reprezentatywne pliki i katalogi ze źródła i miejsca docelowego, zanim uruchomisz Home Assistant.
Wskazówka ZimaSpace dotycząca traktowania kont i uprawnień jako powtarzalnej polityki domowej ma tu zastosowanie: własność powinna być świadomie zaprojektowaną częścią infrastruktury, a nie serią jednorazowych poprawek.
Zachowaj montowanie z dostępem do zapisu tylko tam, gdzie Home Assistant go potrzebuje
Home Assistant musi mieć możliwość aktualizowania trwałej konfiguracji i bazy danych. Montowanie przypadkowo odtworzone jako tylko do odczytu może umożliwić uruchomienie i odczyt danych, ale później powodować błędy zapisu, tworzenia kopii zapasowych, zatwierdzania zmian w bazie danych lub modyfikowania konfiguracji.
Ścieżki hosta montowane wiązaniem mogą być udostępniane do odczytu i zapisu albo tylko do odczytu. Przewodnik Dockera dotyczący udostępniania plików pokazuje, że efektywny tryb montowania określa, czy kontener może modyfikować katalog hosta. Sprawdź działające montowanie, zamiast zakładać, że plik Compose został zastosowany zgodnie z zamierzeniem.
Nie udostępniaj natomiast do zapisu niezwiązanych katalogów hosta tylko dlatego, że Home Assistant potrzebuje dostępu do jednej ścieżki konfiguracyjnej. Utrzymuj wąską granicę uprawnień.
Po każdym przywróceniu lub odtworzeniu wykonaj test akceptacyjny uprawnień
Pomyślne uruchomienie potwierdza tylko część umowy dotyczącej systemu plików. Home Assistant może odczytywać istniejące pliki, ale później zawieść przy zapisie do bazy danych, tworzeniu kopii zapasowej, aktualizowaniu rejestru lub zapisywaniu pulpitu.
- Potwierdź, że oczekiwana konfiguracja i integracje są wczytywane.
- Wprowadź jedną nieszkodliwą zmianę zarządzaną z poziomu interfejsu i sprawdź, czy zostaje zachowana po ponownym uruchomieniu.
- Potwierdź, że Recorder zapisuje nową zmianę stanu.
- Utwórz małą kopię zapasową, jeśli dany typ instalacji to obsługuje.
- Przejrzyj dzienniki pod kątem błędów odmowy dostępu, systemu plików tylko do odczytu lub zapisu do bazy danych.
Jeśli test się nie powiedzie, popraw konkretną własność, grupę, listę ACL, mapowanie przestrzeni nazw lub tryb montowania odpowiedzialny za daną ścieżkę. Rozbieżność uprawnień jest usunięta wtedy, gdy udokumentowane wdrożenie może odtworzyć prawidłowy dostęp bez ręcznych poleceń awaryjnych.
Wsparcie i wskazówki
Więcej do przeczytania

Oznaki wskazujące, że baza danych Home Assistant wymaga konserwacji lub wymiany
Duża baza danych Home Assistant zwykle wymaga konfiguracji przechowywania danych lub czyszczenia; powtarzające się uszkodzenia albo błędy integralności są silniejszym sygnałem do wymiany.

Ilu jednoczesnych użytkowników może obsłużyć Home Assistant, zanim zacznie działać wolniej?
Home Assistant nie ma stałego, użytecznego limitu użytkowników: przetestuj aktywnych klientów z rzeczywistymi pulpitami i aktualizacjami encji, a następnie zatrzymaj testy, zanim pojawią się...

Czy Home Assistant może korzystać z zewnętrznej bazy danych bez zakłócania aktualizacji?
Zewnętrzna baza danych Recorder może przetrwać aktualizacje, ale wiąże się z własną dostępnością, migracją schematu, tworzeniem kopii zapasowych, przywracaniem oraz obowiązkami związanymi z wersjonowaniem.

