• SIS Lab
  • >
  • Blog
  • >
  • WSL2のデフォルトユーザを指定する

WSL2のデフォルトユーザを指定する

更新日:2022.07.02 作成日:2021.07.25

以前、 WSL2のLinuxおよびDockerイメージ格納先を任意のディレクトリに移動する で、WSL2のLinuxディストリビューションをデフォルトのCドライブからDドライブに移動した。 その後、VSCodeの利用時に発生したエラーについて、原因と対処方法について調査したときの結果を残しておく。

発生事象

ファイル作成・削除時のエラー

いつものように、Windows Terminal上のUbuntu 20.04からcode .VS Codeを起動し、作業をしていると以下のようなエラーが発生した。

Failed to save 'example.file': Unable to write file (No Permissions (FileSystemError): Error: EACCS: permission denied, open 'path/to/example.file')

※上記のexample.fileは任意のファイル名

VS Code上でgit commit, git push できない

VS CodeのGUIから操作してもエラーになり、VSCodeのターミナルからgit commitしても次のエラーが発生する。

error: insufficient permission for adding an object to repository database .git/objects
error: insufficient permission for adding an object to repository database .git/objects
error: Error building trees

原因

WSL2から起動したVSCodeでファイルを新規作成した際、ファイル所有者がrootになっている。 そのファイルを別のユーザで更新や削除しようとして権限エラーが発生している。

たとえば、.git/objectsのエラーは、次のとおり一部オブジェクトの所有者およびグループがrootになっていた。

meganii@OMEN25L:~/ghq/github.com/meganii/www.meganii.com/.git/objects$ ls -al
total 204
drwxr-xr-x 51 meganii meganii 4096 Jul 25 20:30 .
drwxr-xr-x  9 meganii meganii 4096 Jul 25 20:32 ..
drwxr-xr-x  2 meganii meganii 4096 Jul  4 21:30 05
drwxr-xr-x  2 root    root    4096 Jul 11 16:39 07
drwxr-xr-x  2 root    root    4096 Jul 24 19:40 08
drwxr-xr-x  2 root    root    4096 Jul 11 18:08 09
drwxr-xr-x  2 root    root    4096 Jul 11 18:08 0a
drwxr-xr-x  2 meganii meganii 4096 Jul 11 18:09 0b
drwxr-xr-x  2 root    root    4096 Jul 11 18:08 0e
drwxr-xr-x  2 root    root    4096 Jul 24 19:41 14
drwxr-xr-x  2 meganii meganii 4096 Jul 11 18:09 1d
drwxr-xr-x  2 root    root    4096 Jul 24 19:37 21

対処方法

デフォルトでインストールしたWSL2のLinuxディストリビューションであれば、次のドキュメント「 ディストリビューションの既定のユーザーを変更する 」のとおり、規定ユーザの変更で問題なさそうだ。

しかし、デフォルトのインストール場所から変更したLinuxディストリビューションは、以下のコマンドでは動作しなかった。 Ubuntu20.04のPATHが通っていない。

> Ubuntu20.04 config --default-user meganii
Ubuntu20.04 : The term 'Ubuntu20.04' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Ubuntu20.04 config --default-user meganii
+ ~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Ubuntu20.04:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

では、どのように対処するかというと、Linuxディストリビューションの/etc/wsl.confに、以下の内容を追加する。

[user]
default=meganii

.git/objectsについては、以下のコマンドで所有者およびグループを元に戻した。

cd .git
sudo chown meganii:meganii objects/*

念のためwsl --shutdownwsl2を再起動すると、VSCodeでの権限エラーは発生しなくなった。

参考URL

Related contents