Nie tylko gedit
, które może zawieść, ale w rzeczywistości wszystkie programy używające protokołu X11 do komunikowania się z serwerem graficznym. X11 używa protokołu Xauth do uwierzytelniania klientów łączących. Kiedy logujesz się za pośrednictwem jakiegoś menedżera wyświetlania, plik cookie uwierzytelniający MIT-MAGIC-COOKIE-1
jest tworzony i zapisywany w pliku ~/.Xauthority
. Plik ten jest odczytywany przez klientów X11, a pliki cookie dostępne do tego celu służą do uwierzytelniania połączeń.
Lista ciasteczek w pliku ~/.Xauthority
mogą być wyświetlane przy użyciu xauth list
:
$ xauth list
localhost:1012 MIT-MAGIC-COOKIE-1 bd988401cbf8xxxxxxxxxxxxxxxxxxxx
some.host.example.com/unix:1012 MIT-MAGIC-COOKIE-1 bd988401cbf8xxxxxxxxxxxxxxxxxxxx
Jeśli zmienisz nazwę hosta, biblioteka klient X11 nie będzie już w stanie znaleźć cookie dopasowanie w bazie danych uwierzytelniania a serwer X11 odrzuci nieuwierzytelnione połączenie (chyba że skonfigurowano inaczej).
Co można zrobić, to dodać cookie pasujący korzystając xauth
:
$ xauth add "$(hostname)/unix:0" MIT-MAGIC-COOKIE-1 bd988401cbf8xxxxxxxxxxxxxxxxxxxx
$(hostname)
rozszerza na skutek polecenia z hostname
i unix:0
odpowiada zmienna DISPLAY
środowisko jest ustawiony na :0.0
. Jeśli jest to inny numer wyświetlacza, np. :ddd.0
, należy zmienić dodany wpis hosta zgodnie z "($hostname)/unix:ddd"
. Zwróć też uwagę, że wartość dodawanego cookie powinna odpowiadać wartości istniejącego.
Jeśli nie masz otwartego emulatora terminala i nie możesz go otworzyć z powodu błędu uwierzytelnienia, możesz przełączyć się na konsolę (tryb tekstowy), zaloguj się i wykonaj powyższe polecenie.
Jak zmienić nazwę komputera? Ręcznie (np. Edycja/etc/hostname) lub przy użyciu narzędzia? – jml
Zmieniam nazwę hosta za pomocą tego polecenia sudo hostname master.192.168.1.44 –
Ok. Możesz sprawdzić, czy twoja nowa nazwa hosta ma wpis w '/ etc/hosts' else dodaj go. Ale nie jestem pewien, czy to jest prawdziwy problem ... – jml