2023-10-29に更新

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

WSL

こんにちは、しきゆらです。
今回は、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ディストリビューションの登録解除の方法を置いておきます。

WSL の基本的なコマンド | Microsoft Learn https://learn.microsoft.com/ja-jp/windows/wsl/basic-commands#unregister-or-uninstall-a-linux-distribution

今回は、ここまで。

おわり

Originally published at shikiyura.com
ツイッターでシェア
みんなに共有、忘れないようにメモ

しきゆら

勉強したり手を動かした記録を「しきゆらの備忘録」(http://shikiyura.com)へ投稿している人。 Ruby/JavaScriptをよく書いている。いろんな言語に触れてみたい。新しい物・辛いもの好き。バグは愛すべきもの。一応社会人。

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント