iceauth
Więcej informacji
- Autor
- Ralph Mor, X Consortium
- Rok
- Typ
- Narzędzie do plików autoryzacji ICE
- Licencja
- MIT
- Kod źródłowy
- gitlab.freedesktop.org
Bliźniak Xauth dla połączeń ICE: edytuje plik ciasteczek, które menedżery sesji i ich klienci pokazują sobie nawzajem — najlepiej znany z komunikatu o błędzie, który blokował logowanie do GNOME.
ICE jest odrębną warstwą transportową, więc dostała też własny plik autoryzacji. Każdy wpis w ~/.ICEauthority zawiera protokół — ICE dla samego połączenia albo XSMP dla podprotokołu — identyfikator sieciowy nasłuchującego gniazda, zwykle w postaci local/hostname:/tmp/.ICE-unix/PID, metodę MIT-MAGIC-COOKIE-1 oraz samo ciasteczko. Format to w zasadzie Xauthority z jedną dodatkową kolumną, a iceauth, napisany przez Ralpha Mora dla X11R6 w 1994 roku, jest kopią xauth z tymi samymi poleceniami: list, add, remove, extract i merge, interaktywnie lub z wiersza poleceń. Zapisuje menedżer sesji: xsm, ksmserver i gnome-session wstawiają swoje ciasteczko przy otwieraniu gniazda, a każdy klient łączący się przez libSM czyta ten sam plik, aby móc odpowiedzieć.
Prawie nikt nie uruchamia iceauth ręcznie, ale sam plik potrafił dać o sobie znać. Program graficzny uruchomiony przez sudo mógł zostawić ~/.ICEauthority jako własność roota, a przy następnym logowaniu gnome-session nie mógł zapisać swojego wpisu, poddawał się i od razu wylogowywał — „Could not update ICEauthority file” przez lata należało do najczęstszych sposobów na zamknięcie sobie dostępu do pulpitu GNOME, a na drugim miejscu był pełny katalog domowy. Rozwiązaniem było przeniesienie pliku: zmienna środowiskowa ICEAUTHORITY wskazuje dziś zwykle na $XDG_RUNTIME_DIR, który jest czyszczony przy wylogowaniu i nigdy nie odziedziczy złego właściciela, podczas gdy plik w katalogu domowym leży pusty.