【WSL】ユーザアカウントにログインできなくなった場合の確認と対処方法

Linux,Windows

こんにちは、しきゆらです。
今回は、WSL起動時に初期設定したユーザでログインできなくなったので、調べたり対応したことをメモしておきます。

WSLのインストール時にユーザアカウントを作成しますが、いつの間にかユーザアカウントへログインできずにrootとしてログインしてしまう状況になっていました。
何が起こっているのかわからなかったので、諸々も調べてユーザアカウントとしてログインできるよう修正したのでメモしておきます。

WSLはWindows Subsystem for Linuxという通り、動いているのはLinuxになります。
なのでLinuxコマンドや各ファイルをもとに確認していきます。


作業の流れ

ざっと流れを記載しておくと以下の通りです。

  • 現在ログインしているユーザを確認する
  • ユーザアカウントの有無を確認する
  • デフォルトのログインユーザを指定する
  • 指定したユーザでログインできるか確認する

では、それぞれを見ていきます。

現在ログインしているユーザを確認する

ほぼログイン時のパスなどでわかると思いますが、念のため書いておきます。
whoamiコマンドで確認すると以下のように表示されます。

# whoami
root

コマンド名の通り、現在のユーザを確認するコマンドになります。 rootとなっていれば大本の管理アカウントなので、普段使っているユーザアカウントとは異なっていることがわかります。

ユーザアカウントの有無を確認する

続いて、これまで使っていたユーザが残っているのかどうかを確認してみます。 これはコマンドではなく/etc/passwdファイルにまとまっているので、中身を確認してみます。 このファイルには、ユーザ以外にもデーモンなど裏側で作られているものも含まれているので、grepコマンドでほしい情報があるかを絞ったほうが見やすいです。

# 全体の確認
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
... 

# これまでのアカウントがあるかどうかを確認する場合
cat /etc/passwd | grep <ユーザ名>
# ファイルの中にユーザ名が含まれていればその行が表示され、含まれていなければ何も表示されません

grepしてユーザ名が書かれた行がなければ、/home/<ユーザ名>のディレクトリを確認し必要なファイルのバックアップを取ったうえで初期化したほうが良いかもしれません。

私の場合は、このファイルにユーザ名の行があったので以下の手順で復帰しました。

ログインするユーザを指定する

上記でユーザが残っていることはわかったので、ログインするユーザを明示してあげます。 記載するファイルは/etc/wsl.confで以下のように記載します。

# 以下を追記
[user]
default=<ユーザ名>

# ログイン時にWindowsのパス情報を追加したくない場合は以下も記載
[interop]
appendWindowsPath = false

上記を記載したら、念のためWSLの再起動をしてあげた後にログインしてみましょう。
PowerShellからWSLを止めます。

# PowerShellからWSLをシャットダウンする
wsl --shutdown

指定したユーザでログインできるか確認する

WSLを一度シャットダウンしたので、該当するディストリビューションへログインましょう。

# wslを立ち上げてログインする
wsl -d <ディストリビューション>
# whoamiコマンドで意図したユーザとしてログインできているかを確認する
$ whoami
<ユーザ名>

無事に指定したユーザでログインできれば、修正完了です。

rootのままだった場合は、ユーザの指定を間違えていないかを確認してみてください。
解消しなければ「ユーザアカウントの有無を確認する」のところにも記載していますが、バックアップを取ったうえで初期化したほうが安全かと思います。

まとめ

今回は、WSLのログインがrootになってしまったので修正方法を調べつつまとめました。
私の場合は、たまたま今回はアカウントが残っていたので無事に修正できましたが、アカウントそのものが残っていない場合は復旧が難しいかもしれません。
その場合は、できるだけ必要なファイルをバックアップしたうえで初期化するしかないかと思います。
幸い、WSLの初期化は簡単なので使える状態にするには時間がかからないかと思います。

参考情報としてLinuxディストリビューションの登録解除の方法を置いておきます。

今回は、ここまで。

おわり

Posted by しきゆら