Windows Subsystem for Linux のユーザー アカウントとアクセス許可User Accounts and Permissions for Windows Subsystem for Linux

Linux ユーザーの作成は、WSL で新しい Linux ディストリビューションを設定する際の最初の手順です。Creating your Linux user is the first step in setting up a new Linux distribution on WSL. 作成した最初のユーザー アカウントは、次のいくつかの特殊な属性で自動的に構成されます。The first user account you create is automatically configured with a few special attributes:

  1. これは既定のユーザーであり、起動時に自動的にサインインします。It is your default user -- it signs-in automatically on launch.
  2. 既定では、Linux 管理者 (sudo グループのメンバー) です。It is Linux administrator (a member of the sudo group) by default.

Windows Subsystem for Linux で実行されている各 Linux ディストリビューションには、独自の Linux ユーザー アカウントとパスワードがあります。Each Linux distribution running on the Windows Subsystem for Linux has its own Linux user accounts and passwords. ディストリビューションの追加、再インストール、または再設定を行うたびに、Linux ユーザー アカウントを構成する必要があります。You will have to configure a Linux user account any time you add a distribution, reinstall, or reset. Linux ユーザー アカウントは、ディストリビューションごとに独立しているだけではなく、Windows ユーザー アカウントにも依存しません。Linux user accounts are not only independent per distribution, they are also independent from your Windows user account.

Linux パスワードの再設定Resetting your Linux password

Linux ユーザー アカウントへのアクセス権があり、現在のパスワードを知っている場合は、そのディストリビューションの Linux パスワード再設定ツール (最も一般的なのは passwd) を使用して変更してください。If you have access to your Linux user account and know your current password, change it using Linux password reset tools of that distribution -- most likely passwd.

これを実行できない場合、ディストリビューションによっては、既定のユーザーを再設定することでパスワードを再設定できることがあります。If that's not an option, depending on the distribution, you may be able to reset your password by resetting the default user.

WSL では、WSL を開始するときに自動的にログインするユーザー アカウントを識別するための既定のユーザー タグが用意されています。WSL offers a default user tag to identify which user account automatically logs in when you start a WSL. 多くのディストリビューションには、既定のユーザーをルートに設定するコマンドや、パスワードが設定されていないルート ユーザーを設定するコマンドが含まれているため、既定のユーザーのルートへの変更は、パスワードの再設定などのための便利なツールになります。Since many distributions include commands to set the default user to root and also a root user with no password set, changing the default user to root is a handy tool for things like password reset.

Creators Update 以前の場合For Creators Update and earlier

Windows 10 Creators Update 以前を実行している場合は、次のコマンドを実行して既定の Bash ユーザーを変更できます。If you're running Windows 10 Creators update or earlier, you can change the default Bash user by running the following commands:

  1. 既定のユーザーを root に変更します。Change the default user to root:

    C:\> lxrun /setdefaultuser root
    
  2. bash.exe を実行して、今度は root としてログインします。Run bash.exe to now login as root:

    C:\> bash.exe
    
  3. ディストリビューションのパスワード コマンドを使用してパスワードを再設定し、Linux コンソールを閉じます。Reset your password using the distribution's password command, and close the Linux Console:

    $ passwd username
    $ exit
    
  4. Windows CMD で、既定のユーザーを通常の Linux ユーザー アカウントに再設定して戻します。From Windows CMD, reset your default user back to your normal Linux user account:

    C:\> lxrun.exe /setdefaultuser username
    

Fall Creators Update 以降の場合For Fall Creators Update and later

特定のディストリビューションで使用できるコマンドを確認するには、[distro.exe] /? を実行します。To see what commands are available for a particular distribution, run [distro.exe] /?.

たとえば、Ubuntu がインストールされているとします。For example, with Ubuntu installed:

C:\> ubuntu.exe /?

Launches or configures a linux distribution.

Usage:
    <no args>
      - Launches the distro's default behavior. By default, this launches your default shell.

    run <command line>
      - Run the given command line in that distro, using the default configuration.
      - Everything after `run ` is passed to the linux LaunchProcess cal

    config [setting [value]]
      - Configure certain settings for this distro.
      - Settings are any of the following (by default)
        - `--default-user <username>`: Set the default user for this distro to <username>

    clean
      - Uninstalls the distro. The appx remains on your machine. This can be
        useful for "factory resetting" your instance. This removes the linux
        filesystem from the disk, but not the app from your PC, so you don't
        need to redownload the entire tar.gz again.

    help
      - Print this usage message.

Ubuntu を使用したステップ バイ ステップの手順:Step by step instructions using Ubuntu:

  1. CMD を開きます。Open CMD

  2. 既定の Linux ユーザーを root に設定します。Set the default Linux user to root:

    C:\> ubuntu config --default-user root
    
  3. Linux ディストリビューション (ubuntu) を起動します。Launch your Linux distribution (ubuntu). root として自動的にログインします。You will automatically login as root:

  4. passwd コマンドを使用してパスワードを再設定します。Reset your password using the passwd command:

    $ passwd username
    
  5. Windows CMD で、既定のユーザーを通常の Linux ユーザー アカウントに再設定して戻します。From Windows CMD, reset your default user back to your normal Linux user account.

    C:\> ubuntu config --default-user username
    

アクセス許可Permissions

WSL のアクセス許可に関しては、留意すべき重要な概念が 2 つあります。There are two important concepts to keep in mind when it comes to permissions in WSL:

  1. Windows アクセス許可モデルは、Windows リソースに対するプロセスの権限を管理しますThe Windows permission model governs a process' rights to Windows resources
  2. Linux アクセス許可モデルは、Linux リソースに対するプロセスの権限を制御しますThe Linux permission model controls a process' rights to Linux resources

WSL で Linux を実行すると、Linux はそれを起動するプロセスと同じ Windows アクセス許可を持ちます。When running Linux on WSL, Linux will have the same Windows permissions as the process that launches it. Linux は、次の 2 つのアクセス許可レベルのいずれかで起動できます。Linux can be launched in one of two permission levels:

  • 通常 (管理者特権でない):Linux は、ログインしているユーザーのアクセス許可を使用して実行されますNormal (non-elevated): Linux runs with the permissions of the logged-in user
  • 管理者特権/管理者:Linux は、管理者特権/管理者の Windows アクセス許可を使用して実行されますElevated/admin: Linux runs with elevated/admin Windows permissions

昇格されたプロセスはシステム全体の設定やシステム全体にわたるデータまたは保護されているデータへのアクセスや変更が可能であり、結果として破損させる可能性があるため、Windows と Linux のどちらのアプリケーション/ツール/シェルであるかに関係なく、どうしても必要でない限りは昇格されたプロセスを起動しないようにしてくださいBecause elevated processes can access/modify (and therefore damage) system-wide settings and system-wide/protected data, AVOID launching elevated processes unless you absolutely have to - whether they're Windows or Linux applications/tools/shells!

上記の Windows アクセス許可は、Linux インスタンス内のアクセス許可とは無関係です。Linux の "ルート権限" は、Linux 環境およびファイル システム内のユーザーの権限にのみ影響し、付与されている Windows 特権には影響しません。The above Windows permissions are independent of the permissions within a Linux instance: Linux "Root privileges" only impact the user’s rights within the Linux environment & filesystem; they have no impact on the Windows privileges granted. したがって、(たとえば、sudo を使用して) Linux プロセスをルートとして実行すると、Linux 環境内でそのプロセス管理者権限のみが付与されます。Thus, running a Linux process as root (e.g. via sudo) only grants that process admin rights within the Linux environment.

例: Example:
Windows 管理特権がある Bash セッションでは cd /mnt/c/Users/Administrator にアクセスできる一方で、管理特権のない Bash セッションでは "アクセス許可が拒否されました" というエラーが表示されます。A Bash session with Windows admin privileges may access cd /mnt/c/Users/Administrator while a Bash session without admin privileges would see a "Permission Denied" error.

Windows 内のアクセス許可は Windows によって管理されているため、Linux では、「sudo cd /mnt/c/Users/Administrator」と入力しても、管理者のディレクトリへのアクセス権が付与されません。In Linux, typing sudo cd /mnt/c/Users/Administrator will not grant access to the Administrator’s directory since permissions within Windows are managed by Windows.

Linux アクセス許可モデルは、Linux 環境内で、ユーザーが現在の Linux ユーザーに基づいたアクセス許可を持っている場合に重要です。The Linux permission model is important when inside the Linux environment where the user has permissions based on the current Linux user.

例:Example:
sudo グループ内のユーザーは sudo apt update を実行できます。A user in the sudo group may run sudo apt update.