【Ubuntu 16.04LTS】 困った、ゲストログインが無限ループする

今日帰ってPCを立ち上げると、なぜかログイン画面がゲストログインになっている。しかもパスワードを何度入れても入らず、すぐゲストログインされてしまう。

この現象は再起動しても、一旦終了してから起動しなおしても直らない。さてどうしたものか。一応ゲストとしてはGUIで立ち上がっており、ネットもつながる。

で、いろいろ調べてみたらグラフィックカードに絡む問題とか。そういえば最初ディスプレイ設定がどうたらとか、エラーメッセージが一瞬出たような。

で、解決するまでの対処法をメモっておく。

  1. CUIでログインする。
  2. homeDIRの .ICEauthority と .Xauthority を削除する。
  3. ゲストセッションを無効にする。

3は本来OSをインストールした後で最初にやっておくべきことらしい。あんまり気にしたこと無かった。

CUIでログインする

Ctrl + Alt + F1 でCUIログインできる。この方法は覚えておく価値あり。GUI絡みのエラーはありえるので、昔ながらのコンソールログインできることは重要。

CUIログインだと、いつものユーザ名とパスワードで入れる。

homeDIRの .ICEauthority と .Xauthority を削除

homeにある .ICEauthority と .Xauthority の2つの隠しファイルを削除する。

$ ls -laF .ICEauthority .Xauthority
-rw------- 1 jgb jgb 954 10月 20 00:11 .ICEauthority
-rw------- 1 jgb jgb 103 10月 20 00:11 .Xauthority
$ rm -f .ICEauthority
$ rm -f .Xauthority  

これでOKのような気がして、ついstartxとしたくなるが、してはいけない。エラー状態でランチャーの無いデスクトップが立ち上がって、抜け出せなくなる。

ちなみにCUIでシステム終了(shutdown -h now)させようとすると「他のユーザがログインしています。本当に.....??」みたいなメッセージが出て、終了できない時がある。そんな時は次のコマンドで強制的に終了させる方法もある。

$ systemctl poweroff -i

[参考:Debian系のシステム再起動・終了コマンド] (https://www.debian.org/releases/stable/s390x/ch08s01.html.ja)

ゲストセッションを無効にする

そもそもゲストログインできるようにしてるから問題が起きる。ゲストセッションを無効にしておこう。

[参考:Ubuntu 16.04LTSでゲストセッションを無効にする](https://qiita.com/JeJeNeNo/items/6f061a0ea8a7cfe198c1

Ubuntu 16.04 のデスクトップ版ではデフォルトでゲストセッションが有効になっている。これを無効にする方法。LightDMというデフォルトのXディスプレイマネージャーの設定を変更することで可能

# lightdmの設定用のディレクトリを作成
sudo mkdir /etc/lightdm/lightdm.conf.d
# 50-no-guest.confというファイルに設定を書き込む
sudo sh -c 'printf "[SeatDefaults]\nallow-guest=false\n" > /etc/lightdm/lightdm.conf.d/50-no-guest.conf'

/etc/lightdm/lightdm.conf.dというDIRはすでにあるかもしれないので、最低限2つめの書き込みコマンドがわかればよい。

$ less /etc/lightdm/lightdm.conf.d/50-no-guest.conf

[SeatDefaults]
allow-guest=false
/etc/lightdm/lightdm.conf.d/50-no-guest.conf (END)

これで再起動すればゲストログインするメニュー右上の表示は無くなっている。

以上の操作で、無事いつもの自分ユーザ名でログインできた。

もしゲストログインを復活させたい場合は、先の設定ファイルを消せば良い。

$ sudo rm /etc/lightdm/lightdm.conf.d/50-no-guest.conf

おまけ

/home/.ICEauthority/home/.Xauthority は削除しても、どちらもGUIログイン時に再度作成される。どちらもauthorityと付いているとおりXサーバにログインする際の認証に使われるファイルだということらしいが、それぞれ役割りが違う。

.ICEauthorityファイル
: Inter-Client Exchange (ICE) Protocolの認証ファイル。Xクライアント間で利用される。

.Xauthorityファイル
: Xクライアント-Xサーバ間で利用される認証ファイル。

ということで、Xクライアント間かXクライアント-Xサーバ間かという違い。今回のようなゲストでしかログインできない&ログインループに嵌まるという現象は、この2つのファイルを削除して再生成すれば直ったということなので、これらの認証ファイルが壊れているなどの理由で、Xサーバログイン時に認証に失敗して起きる現象なのだろう。