BlogKontakt

Konta i dostęp

Kreator pierwszego uruchomienia, konta administratora i tylko do odczytu

Od wersji 1.6 panel ma konta. Sterownik bez konta nie odpowiada na żadne żądanie API, dopóki konto nie powstanie.

Dotyczy to każdej wersji, z której aktualizujesz. Sterownik przechodzący prosto z 1.5 na 1.7 zachowa się tak samo jak ten przechodzący na 1.6 — reguła dotyczy stanu urządzenia, a nie wersji, z której przyszło.

Pierwsze uruchomienie

Sterownik bez konta pokazuje kreator:

  1. Start
  2. Konto — utworzenie konta administratora
  3. Import — opcjonalne odtworzenie kopii konfiguracji
  4. Urządzenia — opcjonalne przypisanie wejść do wyjść lub rolet
  5. Chmura — opcjonalna rejestracja w boneIO Cloud
  6. Gotowe

Sterownik skonfigurowany przed aktualizacją widzi tylko Start, Konto i Gotowe, więc jego dotychczasowe akcje wejść nie zostają zastąpione. Instrukcję krok po kroku znajdziesz na stronie Pierwsze uruchomienie.

Dopóki go nie dokończysz, panel i API są zamknięte. Wyświetlacz OLED oraz log aplikacji pokazują SETUP REQUIRED, więc urządzenie, które przeskoczyło kilka wersji, nie staje się po cichu nieosiągalne.

Kreator pierwszego uruchomienia, krok z tworzeniem konta

Kreator ustawia hasło administratora jako hasło SSH użytkownika boneio jeden raz — gdy to konto jest fabrycznie zablokowane, ma fabryczne hasło Black albo nie ma żadnego. Hasło, które ktoś już wybrał, zostaje bez zmian, a kreator mówi, co się stało. Potem oba hasła są niezależne: zmiana hasła w panelu nie zmienia hasła SSH. Do tego służy karta Hasło logowania SSH.

Dwie role

AdministratorTylko do odczytu
Podgląd urządzeniataktak
Sterowanie — wyjścia, rolety, nawadnianie, termostatytaktak
Zmiana konfiguracjitaknie
Konta, kopie zapasowe, aktualizacje, restarttaknie
Własne hasłotakustawia je administrator

Konto tylko do odczytu jest dla kogoś, kto ma móc korzystać z instalacji, nie mogąc jej przekonfigurować. Może naciskać przyciski — konto, które nie może, jest tylko tablicą informacyjną.

Wszystko, co nie jest jawnie dozwolone, wymaga administratora, więc nowa funkcja jest domyślnie zamknięta dla kont tylko do odczytu, dopóki ktoś nie zdecyduje inaczej.

Kontami zarządza się w Ustawienia → Dostęp → Konta użytkowników. Ostatniego administratora nie da się usunąć ani zdegradować.

Hasło logowania SSH

Po SSH logujesz się zawsze jako boneio, niezależnie od nazwy konta w panelu. Z tego użytkownika da się zostać rootem, więc jego hasło znaczy więcej niż jakiekolwiek hasło panelu. Karta Hasło logowania SSH, na dole strony Konta użytkowników, zmienia je bez otwierania terminala.

Konta użytkowników, karta Hasło logowania SSH z przyciskiem Zmień hasło SSH

  1. Kliknij Zmień hasło SSH.
  2. Wpisz obecne hasło SSH, a potem dwa razy nowe. Musi mieć co najmniej 8 znaków i nie może zawierać boneio.
  3. Potwierdź. Hasła do panelu zostają bez zmian.

Nowe hasło obowiązuje od następnego logowania po SSH, a także przy sudo. To dokładnie to samo co passwd po SSH i, tak jak passwd, wymaga obecnego hasła — panel nie ustawi hasła SSH, którego nikt nie zna. Zapomniane odzyskuje się kartą flashera z BONEIO_RESET_ACCOUNTS=1: konfiguracja zostaje, a konta panelu zakłada się od nowa w kreatorze.

To, co pokazuje karta, zależy od stanu logowania:

Karta mówiCo zrobić
Nadal używane jest hasło fabryczneZmień je teraz — obecne hasło to fabryczne Black
Sam przycisk Zmień hasło SSHHasło jest Twoje; zmieniaj, kiedy chcesz
Logowanie nie ma żadnego hasłaKażdy, kto dotrze po SSH, się zaloguje. Zaloguj się po SSH jako boneio i uruchom passwd
Logowanie jest zablokowaneŻadne hasło jeszcze nie loguje. Ustawia je raz kreator pierwszego uruchomienia
Brakuje migracji 1.6.29Zastosuj oczekujące migracje systemowe, a do tego czasu używaj passwd

Kartę widzą tylko administratorzy. Po pięciu błędnych obecnych hasłach w ciągu piętnastu minut karta odrzuca każdą próbę, także z poprawnym hasłem, dopóki najstarsza nie skończy piętnastu minut — i podaje, ile minut zostało. Każde błędne hasło liczy się też do wylogowania sesji.

Zmiana hasła SSH należy do operacji, które pytają ponownie o hasło panelu. Jeśli zalogowałeś się ponad dziesięć minut temu, po wysłaniu formularza SSH pojawi się okno Potwierdź hasło; wpisz hasło do panelu, a zmiana się wykona.

Zapomniane hasło

Odzyskiwanie hasła odbywa się przez SSH, na sterowniku:

boneio accounts list
boneio accounts reset <nazwa>

O hasło program pyta interaktywnie — nigdy nie przekazuje się go jako argument, więc nie trafia do historii powłoki.

Uruchamiaj te polecenia jako użytkownik boneio, nie przez sudo. Pod sudo plik kont staje się własnością roota i aplikacja przestaje go odczytywać; polecenie ostrzeże, jeśli tak się stanie.

Zmiany działają natychmiast — działająca aplikacja zauważa zmianę pliku i nie wymaga restartu.

Sesje

Po zalogowaniu przeglądarka pozostaje zalogowana przez 30 dni. Zalogowanie jest wysyłane z każdym żądaniem, a nie trzymane w ciasteczku — dlatego też strona otwarta w innej karcie nie może działać w Twoim imieniu.

Usunięcie konta lub zmiana jego roli działa od razu — konto usunięte dziś nie może działać do czasu, aż jego zalogowanie wygaśnie.

Zmiana hasła wylogowuje pozostałe sesje

Gdy hasło konta się zmienia, konto zostaje wylogowane wszędzie, gdzie było zalogowane — z innych przeglądarek, telefonów, tabletu na ścianie:

  • Własne hasło (Zmień hasło przy własnym wierszu w Konta użytkowników): ta przeglądarka zostaje zalogowana, cała reszta jest wylogowana.
  • Hasło innego konta, ustawione przez administratora: wszystkie sesje tego konta się kończą.
  • boneio accounts reset po SSH: wszystkie sesje tego konta się kończą.

Wylogowana przeglądarka przechodzi do ekranu logowania i mówi dlaczego — hasło zostało zmienione albo konto usunięte. Tablet na ścianie zalogowany tym kontem też potrzebuje nowego hasła.

Operacje, które pytają ponownie o hasło

Zalogowanie wystarcza, żeby oglądać sterownik, sterować nim i — jako administrator — zmieniać konfigurację. Krótka lista operacji, których nie da się łatwo cofnąć, wymaga też hasła wpisanego w ciągu ostatnich 10 minut:

  • konta — dodanie lub usunięcie, zmiana roli albo hasła, a także hasło logowania SSH
  • zastąpienie konfiguracji — import archiwum kopii, odtworzenie kopii zapasowej, pełny lub częściowy reset fabryczny, odtworzenie przepływów Node-RED
  • zmiana oprogramowania — aktualizacja lub wycofanie aplikacji, aktualizacja systemu, przełączenie automatycznych poprawek bezpieczeństwa, aktualizacja Caddy (proxy panelu) albo zmiana sposobu jego instalacji
  • certyfikaty — wgranie lub usunięcie własnego certyfikatu HTTPS panelu oraz certyfikaty i tryb w Szyfrowanie (TLS) i Szyfrowanie brokera (TLS) na stronach MQTT

Jeśli minęło więcej, panel pokazuje okno Potwierdź hasło i po jego wpisaniu dokańcza to, o co prosiłeś. Przez kolejne 10 minut nie zapyta ponownie; zalogowanie też się liczy. Restart, ponowne uruchomienie, edytor plików i zapisywanie sekcji konfiguracji nigdy nie pytają — pytanie przy codziennej czynności uczy wpisywać hasło bez czytania.

Zbyt wiele błędnych haseł

Logowanie jest ograniczane: dziesięć nieudanych prób na pięć minut, liczone po adresie i po nazwie konta. To opóźnienie, nie blokada — okno się przesuwa, więc nikt nie zablokuje Ci dostępu do własnego sterownika samym zgadywaniem.

Zalogowana sesja ma łącznie pięć błędnych haseł — w oknie Potwierdź hasło, w formularzu zmiany własnego hasła i w karcie Hasło logowania SSH. Piąte wylogowuje tę sesję. Chroni to przeglądarkę pozostawioną zalogowaną przed kimś, kto zgaduje na niej prawdziwe hasło. Wylogowana zostaje tylko ta sesja — pozostałe urządzenia konta działają dalej — a poprawne hasło zeruje licznik. Licznik przetrwa restart sterownika.

Uporczywe zgadywanie trafia też do Home Assistant — zobacz Zdarzenia bezpieczeństwa.

Praca bez kont

Istnieje furtka, celowo niedostępna z panelu:

web:
  auth:
    allow_anonymous: true

Tak skonfigurowany sterownik udostępnia wszystko każdemu w sieci. Działa tylko dopóki nie istnieje żadne konto — skopiowanie flagi na urządzenie, które ma użytkowników, nie otworzy go. Aplikacja loguje ostrzeżenie przy każdym starcie, a panel pokazuje baner, którego nie da się zamknąć.

Jest w config.yaml, a nie w panelu, celowo. Ostrzeżenie to komunikat, a nie mechanizm kontroli, a przycisk „pomiń" w kreatorze czyniłby ze stanu bez uwierzytelnienia normalny wynik zamierzonej konfiguracji.