WindowsのWSL(Windows Subsystem for Linux)で利用するUbuntuは、一般ユーザーと呼ばれるユーザーで使うことになる。Ubuntuを最初の起動時に入力したユーザー名とパスワードが一般ユーザーのアカウントになっている。これは妥当な設定だが、このままでは管理者権限が必要になる操作を行えない。

そこで今回は、管理者権限が必要な場合にスーパーユーザーになる方法を説明する。→連載「WindowsでUbuntuをはじめる」のこれまでの回はこちらを参照

Ubuntuを起動

Ubuntuを起動する。スタートメニューから「Ubuntu on Windows」を選択すればよい。

  • スタートメニューから「Ubuntu」を起動

    スタートメニューから「Ubuntu」を起動

  • Ubuntu / Windows Terminal

    Ubuntu / Windows Terminal

「Ubuntu on Windows」を選択すると、上のようなターミナルアプリケーションが起動してくる。ここでUbuntuのコマンドを実行する。

一般ユーザーでは実行できないコマンドがある

Ubuntuでは、「apt update; apt upgrade」でパッケージをアップデートする。この手軽さがUbuntuの便利なところなのだが、一般ユーザーのままではこのコマンドを実行できない。

  • 一般ユーザではapt updateといったコマンドは実行できない

    一般ユーザーはapt updateといったコマンドを実行できない

こうしたコマンドは、スーパーユーザーで実行する必要がある。

スーパーユーザーになる方法

Ubuntuに限らず、UNIX系のオペレーティングシステムでは「su」というコマンドを実行することで一般ユーザーからスーパユーザーになったり、スーパユーザーがほかのユーザーになったりすることができる。

しかし、WSLで使用するUbuntuでは、そのままではsuを使えない仕組みになっている。実行しても、次のように一般ユーザーからスーパーユーザーになることはできない。

  • suコマンドだけではスーパーユーザになれない

    suコマンドだけではスーパーユーザーになれない

Linux系のオペレーティングシステムでは、代わりに「sudo」というコマンドで、特定の権限のみスーパーユーザーの権限を与えるといった使い方をすることが多い。ちょっと本末転倒な使い方になるが、次のスクリーンショットのように「sudo su」と実行すると、suが機能するようになって一般ユーザーからスーパーユーザーになることができる。

  • sudo suでスーパーユーザになるサンプル1

    sudo suでスーパーユーザーになるサンプル1

  • sudo suでスーパーユーザになるサンプル2

    sudo suでスーパーユーザーになるサンプル2

WSLで動作するUbuntuでは、sudoコマンドを実行した際にユーザーのパスワードの入力が求められる。WSL Ubuntuをセットアップしたときに入力したパスワードをここで入力する。

スーパーユーザーでコマンドを実行するサンプル(1)

次のスクリーンショットは、「sudo su」でスーパーユーザーになってから、「apt update」コマンドを実行したところだ。

  • スーパーユーザでapt updateを実行

    スーパーユーザーでapt updateを実行

WSL Ubuntuでこのような使い方をすることはあまりないだろうが、明示的にスーパーユーザーになってから操作できることは覚えておいてもらえればと思う。

スーパーユーザーでコマンドを実行するサンプル(2)

sudoコマンドは、コマンド単位でスーパーユーザーとして実行できるところが便利だ。つまり、以下の画面のような感じで、スーパーユーザーになることなく、スーパーユーザー権限が必要なコマンドだけスーパーユーザー権限で実行することができる。

  • sudo apt update - 管理者権限でapt updateを実行

    sudo apt update - 管理者権限でapt updateを実行

  • sudo apt upgrade - 管理者権限でapt upgradeを実行 その1

    sudo apt upgrade - 管理者権限でapt upgradeを実行(1)

  • sudo apt upgrade - 管理者権限でapt upgradeを実行 その2

    sudo apt upgrade - 管理者権限でapt upgradeを実行(2)

よって、実際のところ、通常のコマンドはそのまま実行し、管理者権限が必要なものは「sudo コマンド」のように実行する、というのがUbuntuの使い方ということになってくる。

sudoは本来もっと細かな制御が可能

sudoコマンドは本来、もっと細かく設定して使うことが想定されたコマンドだ。具体的には、「このコマンドだけあるユーザーが管理者権限で実行できるようにする」といった設定ができる。そのため、必要最低限のコマンドを必要最小限のユーザーに管理者権限での実行を許可するために使うことが想定されている。

しかし、現実にはスーパーユーザーで実行するための簡易コマンドとして使われていることが多い。緩い設定にしておくとセキュリティの穴になるのでオススメはできないのだが、WindowsのWSLで動作するUbuntuで使う分にはこのくらいでよいのではないかと思う。厳密に設定して使いにくくしても、それはそれでやりすぎだ。Linuxサーバを運用するようなケースでは、もっと厳密に設定して使うとことを覚えておけばよいと思う。

参考

;link;; https://news.mynavi.jp/techplus/article/ubuntu-on-windows-7/ https://news.mynavi.jp/techplus/article/20221103-2501061/ https://news.mynavi.jp/techplus/article/20220923-2460430/ https://news.mynavi.jp/techplus/article/linux-349/