Definicja tymczasowego, wstępnego hasła użytkownika systemu Guix
ŹRÓDŁO Postanowiłem utworzyć domyślne hasło użytkownika dla nowych instalacji Guix.
W systemach Guix ustawienie wstępnego hasła jest bardzo proste. Polega na wypełnieniu jednego dodatkowego pola w konfiguracji użytkowników.
Definicja wstępnego hasła
ŹRÓDŁO
Aby zdefiniować wstępne hasło, należy zmienić domyślną wartość #f
pola password
w zbiorze user-account
.
Podręcznik Guix sugeruje wykorzystanie wbudowanej funkcji crypt
do posolenia treści hasła.
Moja obecna konfiguracja użytkownika wygląda tak:
(gnu:system:accounts:user-account
(name uid1000-name)
(group "users")
(supplementary-groups groups)
(uid 1000)
(comment "Marek Paśnikowski")
(home-directory "/home/marek"))
ŹRÓDŁO
Szukając dobrego miejsca na wstawienie pola password
zauważyłem, że kolejność pól w moim kodzie nie zgadza się z kolejnością pól w definicji tego zbioru.
Stwierdziłem również, że wstępne hasło będzie jednakowe dla wszystkich instalowanych użytkowników. Powinno być ono zdefiniowane więc w oddzielnym module, dedykowanym dla części wspólnej wszystkich użytkowników.
(define-public initial-password
(crypt "tymczasowehaslodonatychmiastowejzmiany" "dluganieskomplikowanasoldohasla"))
(gnu:system:accounts:user-account
(name uid1000-name)
(password deployment:users:initial-password)
(uid 1000)
(group "users")
(supplementary-groups groups)
(comment "Marek Paśnikowski")
(home-directory "/home/marek"))
DO ZROBIENIA Przy okazji tworzenia modułu centralnego dla wszystkich użytkowników, uświadomiłem sobie zasadność centralizacji listy numerów użytkowników. Taki centralny słownik numerów pozwoliłby na względnie łatwe zmienianie tych numerów w przyszłości. A szczególnie przydatny byłby do identyfikacji jaki następny numer jest obecnie wolny do użycia przez nowego użytkownika.
Wpływ na istniejące hasła
Obawiając się wpływu tej zmiany na już istniejące konta użytkownika wykonałem testową rekonfigurację.
Okazało się, że moje obawy były niepotrzebne. Nadal mogę logować się starym hasłem.
ZROBIONE Pozostało upewnić się, że ta nowa funkcjonalność faktycznie działa przy definicji nowego użytkownika.