Windowsで動作するUbuntuの起動とシャットダウン、それにタスクスケジューラについて取り上げた。今回もその流れで「ログイン」について取り上げる。→連載「WindowsでUbuntuをはじめる」のこれまでの回はこちらを参照。
ログインとは
Ubuntuを使うには、最初にログインを行いUbuntuにアクセスする必要がある。これはWindowsの「サインイン」と同じものだと考えてもらえればよい。
Ubuntuがインストールされたパソコンやサーバの場合、接続されたディスプレイにCUIベースまたはGUIベースのログインスクリーンが表示されている。ここでユーザー名とパスワードを入力することでUbuntuが利用できるようになる。利用が終わったらログアウトする。そしてディスプレイは最初のログインスクリーンに戻る。
Ubuntuにおけるログイン・ログアウトはWindowsにおけるサインイン・サインアウトと同じ概念のものだ。
サーバとして動作しているUbuntuにリモートからログインする場合、ディスプレイは見えないが、代わりにターミナルでユーザー名とパスワードを指定してサーバに接続する。このリモートからの作業にはSSHが使われることが一般的だ。ここでもユーザー名は必要で、パスワードないしはそれに相当する暗号鍵などが認証に使われる。形は変わるが、通常こうした認証なしに利用できる状態には設定されていない。
WindowsのUbuntuはログインがわかりにくい
WindowsのWSL (Windows Subsystem for Linux)で動作するUbuntuには、こうした明示的な「ログイン」がない。ログインがないというか、利便性を優先してこの部分がショートカットされており、ユーザー名とパスワードを入力したあとでシステムを使い出せるといった道は提供されていない。
例えば、次のスクリーンショットはwslコマンドを実行してUbuntuを利用しているサンプルだ。
Ubuntuを使うにあたって、ユーザー名の指定も、パスワードの入力も行っていない。にもかかわらず、Ubuntuが使用できている。セキュリティの観点から、これはあってはならないことなのだが、Windowsで動作するLinuxという特性上このような動作が可能になっている。すでにWindowsを使うためにサインインをしているので、そのあとでさらにログインしなくてもよいだろうというわけだ。
上記のスクリーンショットの場合、wslコマンドで使い出したUbuntuは「daichi」というユーザー名になっていることがわかる。これはUbuntuの最初の起動時に設定したユーザーだ。
ユーザーを指定してUbuntuにログインする
WindowsのWSLで動作するUbuntuの場合、「wsl --user ユーザー名」のようにして、使い出す最初のタイミングでユーザー名を指定することは可能になっている。動作結果は先ほどと同じになる。ユーザー名を指定して実行した場合のサンプルを次のスクリーンショットに示す。
試しに、存在しないユーザー名を指定して実行すると次のようになる。
指定したユーザーは存在していないのでUbuntuの利用は開始できていない。こうなると、ちょっとログインっぽい感じがしてくる。
rootを指定してUbuntuにログインする
WindowsのWSLで利用するUbuntuに最初から用意されるユーザーは、ユーザーが自分でユーザー名を入力したユーザーと、スーパーユーザーrootがある。先ほどと同じ要領でwslコマンドを実行すると、次のようにrootユーザーでログインしてUbuntuを使うことができる。
rootは一般ユーザーとはプロンプトの設定が異なるので、明確に他のユーザーとは異なることがわかると思う。今のところ、一般ユーザーでのログインとrootでのログイン、この2つを切り替えられるというのが、WSLで動作するUbuntuにおいてログインらしい動作を体感できるところだ。
ログインの仕組みをもうちょっとだけ詳しく
もうちょっと詳しく話しておくと、Ubuntuでは実行の主体は「プロセス」であり、このプロセスには誰が持ち主であるかという「ユーザー」が必要になる。ログインするという操作は通常、指定したユーザーとしてシェルのプロセスを起動する、ないしは、シェルに相当するソフトウェアを起動する、といった仕組みに設定されていることが多い。
このため、wslコマンドでユーザーが利用するシェルを起動するという操作は、動作としてはログインそのものだ。パスワードの入力が求められない仕組みになっているので従来のログインと違うように見えるが、動作としてはUbuntu的な処理をしているだけにすぎない。
これまで何気なくUbuntuのターミナルを起動したりwslコマンドを実行したりしてUbuntuを使い出してきたわけだが、実はこの最初の操作がログインに相当するものになっていたということは軽く覚えておくとよいと思う。
参考
- Windows Subsystem for Linux Documentation | Microsoft Docs
- What is Windows Subsystem for Linux | Microsoft Docs
- Install Linux on Windows with WSL | Microsoft Docs
- Basic commands for WSL | Microsoft Docs
- Run Linux GUI apps with WSL | Microsoft Docs
- Get started using VS Code with WSL | Microsoft Docs
- Set up Node.js on WSL 2 | Microsoft Docs
- Advanced settings configuration in WSL | Microsoft Docs
- Add or connect a database with WSL | Microsoft Docs
- Comparing WSL 1 and WSL 2 | Microsoft Docs
- Manual installation steps for older versions of WSL | Microsoft Docs
- Set up a WSL development environment | Microsoft Docs
- Install Linux Subsystem on Windows Server | Microsoft Docs
- Troubleshooting Windows Subsystem for Linux | Microsoft Docs
- FAQ's about Windows Subsystem for Linux | Microsoft Docs