WSL2でユーザ設定をしなかった場合のユーザ登録方法とは

WSL2でディストリビューションのインストール後、初回起動時に下図のようにユーザの登録が促されます。

この画面を閉じてしまったりして、何らかの理由で登録が行われなかった場合、下図のようにスーパーユーザ(root)がデフォルトのユーザになってしまいます。

この状態から新規ユーザを登録し、起動時のデフォルトユーザにする方法を紹介します。

まず、root以外の場合はrootに管理者権限を昇格させます。最初からrootになってしまっているケースでは不要です。

$ sudo -s
[sudo] XX のパスワード:
#

useraddコマンドで新しいユーザ名を登録します。
ここでは例として”linux”としました。
-mオプションでホームディレクトリを作成します。
-sオプションではログイン時のシェルを指定します。ここで”SHELL”という環境変数を指定しています。変数の中身は通常、”/bin/bash”です。変数を参照に使うときには頭に”$”をつける規則です。

# useradd -m -s $SHELL linux

ユーザのログインシェルをgrepコマンドで調べてみます。
“/etc/passwd”というファイルに、テキスト形式でユーザ名とログインシェルのペアが定義されています。grepは文字列でテキストを検索するコマンドです。ユーザ名”linux”で検索し、シェルが何かを調べます。
passwdファイルの文字列は、”:”でカラムが区切られており、最初のカラムがユーザ名、最後のカラムがシェル(フルパス)です。下図ではbashとなっていることがわかります。

# grep linux /etc/passwd
linux:x:1000:1000::/home/linux:/bin/bash

passwdコマンドで登録したユーザ名のパスワードを設定します。

# passwd linux
New password:
Retype new password:
passwd: password updated successfully

usermodコマンドで、追加したユーザ名に管理者権限を付与します。これにより、sudoコマンドにより管理者権限でコマンドを実行することができるようになります。

# usermod -G sudo linux

追加したユーザをデフォルトのユーザにします。
Windowsのターミナル画面から、以下を実行します。

PS C:\Users\win> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu          Running         2
  Ubuntu-22.04    Running         2

「Ubuntu」と「Ubuntu-22.04」のふたつのディストリビューションがインストールされていることが分かりました。今回、ユーザを登録して、そのユーザをデフォルトに変更したいディストリビューションは「Ubuntu」だとします。
以下を実行します。

PS C:\Users\win> Ubuntu config --default-user linux

これで「Ubuntu」起動時のデフォルトのユーザが”root”から”linux”に変更されました。

最後に

初回起動時にユーザ登録をパスしてしまってrootになってしまった場合は、実はディストリビューションを削除して、作成しなおしたほうが早いかもしれません。しかしながら、今回のように地道に手直ししていくのもWSL2の楽しみ方の一つだと思います。

皆様もぜひ、楽しんでください。