みねっちょのマイコン関係ブログ

組込開発系フリーソフトやハードの情報発信ブログ

WSL の起動時デフォルト ユーザ変更

最終更新:2021-05-22
WSL で起動時デフォルト ユーザの変更が必要な理由と手順を解説します。Linux を tar アーカイブから wsl.exe でインポートした場合には wsl.conf を変更します。マイクロソフト ストアからインストールした場合にはコマンドが付属しています。対応レジストリも紹介します。

目次:



デフォルト ユーザの変更が必要な理由:

一般論として、Linux をインストールした直後の状態では root ユーザのみが存在します。その後に新規の一般ユーザの追加を行います。
WSL で起動時のデフォルト ユーザを root のまま使用してしまうと、Linux から 一般ユーザとしてWindows コマンドを実行した場合でも root 権限で実行され、作成されるファイルの所有者が root となってしまいます。
例えば bash から code . コマンドで VSCode (Visual Studio Code) を起動し、VSCode 内のマウス操作でビルドを行うと、中間ファイルや実行形式ファイルは全て所有者が root になってしまいます。また、ログ ファイルもユーザ ディレクト~/.vscode ではなく /root/.vscode ディレクトリに作成されてしまいます。

この様な状態では運用が出来ませんので、WSL 起動時のデフォルト ユーザを所望のユーザに変更しておく必要が有ります。



自力で tar アーカイブからインポートしてインストールした場合:

Windows PowerShell から wsl.exe --import コマンドで tar アーカイブ (tarball) からインストールした場合は、 インストールした Linux 上に /etc/wsl.conf を作成します。 ファイルには次の内容を記載します。username が起動時のデフォルト ユーザとなります。尚、この方法ではレジストリの変更は行われません。

[user]
default=username
設定は WSL をシャットダウンして再起動した後に有効になります。WSL のシャットダウンは、PowerShell から次のコマンドで行います。シャットダウンは個別のウィンドウ毎には行えませんので、必ず全ての WSL ウィンドを閉じてからコマンドを実行します。

wsl --list --verbose
wsl --shutdown
wsl --list --verbose

Microsoft Store からインストールした場合:

Microsoft Store から Microsoft 社が提供している純正のパッケージを使用してインストールした場合には、PowerShell からコマンドで変更します。但し、コマンドはパッケージ毎に変わります。また、コマンドを実行するとレジストリが変更されます。

Distribution Command
Ubuntu-20.04 ubuntu20.04 config --default-user username
Ubuntu ubuntu config --default-user username

コマンドは、次のフォルダにインストールされていますので、上述とは別のディストリビューションMicrosoft Store からインストールしている場合には御自身で確認なさってください。



対応するレジストリ

WSL の各ディストリビューションの状態は、Windowsレジストリに記録されています。
次のレジストリ階層に、各ディストリビューションに自動で割り当てられた番号毎に階層化されて格納されています。 \HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\

この階層中から、ディストリビューション名がDistributionName レジストリと一致する物を探し出します。探し出した階層中の DefaultUid レジストリが /etc/passwd ファイルの uid となります。通常は uid は十進で 1000 番からが一般ユーザーに割り当てられます。つまり16進では 0x000003e8 からとなります。

f:id:minettyo:20210520233802j:plain


【広告】


トラブル発生時の対応:

Linux 側でのトラブルによりデフォルトユーザでの起動が出来なくなってしまった場合、PowerShell から次のコマンドを打つと root でログイン可能です。尚、ディストリビューション名にはリスト表示で得られた名称を正確に記入します。

wsl --list
wsl -d distribution -u root



【広告】


【WSL 関係の目次へ戻る】