拾い物のコンパス

まともに書いたメモ

Ubuntuで認証画面を無限ループさせる方法と対処

最近DM(デスクトップマネージャー)やWM(ウィンドウマネージャー)をいじっていると、ある時突然認証画面でパスワードを入力してもすぐにまた認証画面が出る無限ループに陥った。割と楽しい現象だったので引き起こし方と対処を書き残す。

確認した環境

無限ループを正常に引き起こせたOSは以下の通り(これしか試していない)
・Ubuntu14.04 LTS 32/64bit
・LightDM・GNOMEを入れたArch Linux 64bit

無限ループの呪文

$ sudo startx && sudo reboot
以上。
パスワードの長い認証を抜けると、認証であった。
30回ほどパスしたが、終わらなかった。

対処

まずはシェルを起動する。
簡単な方法としては以下のものがある。
sudoが使える別ユーザでログイン
・Ctrl+Alt+F1とかを押してCUIでログイン
sudoを使えるユーザでログインすることが重要。そして以下のファイルを削除する。

.ICEauthority  : 複数のXクライアント同士で直接通信するときの認証に使われる。内部にランダムなCookieを保有していて、これが同じXクライアント同士が通信できる。
.Xauthority    : Xサーバの認証に使うファイル。詳しくはxauthで調べる。

.ICEauthority.Xauthorityは同じように見えるが、前者はClient to Client, 後者はClient to Serverであることが大きな違い。

これで再起動すれば正常に動くようになる。消したファイルは再度作成される。

原因

認証ファイルを消したらうまくいったってことは、Xサーバの認証の失敗ってことでいいんだろうか。
GDMとLightDMの.Xauthorityファイルの使い方についてもっと詳しく調べたほうがよさそうだ。
正直全くわかっていない。わかったら追記する。

考察

実はもう一つの対処として、ArchのDMをGDMに変更しするというものもある。
これをした場合、sudo startxが自体が成功しなくなった。そして、認証もループが起こらなくなった(無限ループが起こっている状態で隠しファイルを消さずにDMを変更した。このままLightDMに戻すとまたループ)。
UbuntuはDMにLightDMを用いていることから考えると、今回のこの無限ループはLightDMに起因するものなのだろうか。 もしくは、LightDM内で使われているであろうxauthが原因である可能性が高いのではないかと思う。
どちらにせよ、UbuntuDebianベースのXubuntuやLubunt、Kali Linuxのようなファミリーはすべて今回の現象が起こる可能性がある。実際に試してはいないので何とも言えないが。
もし試し方がいたら環境と結果を教えて頂けると非常にありがたい。
これの根本的な原因を追究できるようになりたい・・・。

参考

Ubuntu Xサーバー その3 - ログインしてもログイン画面に戻される時は - Ubuntu kledgeb

open - what is .ICEAuthority file in opensuse 11.2 - Server Fault