【解決】WSL上の別ユーザーでVSCodeを開こうとしたらchdir failedエラーになった件【WSL2】
はじめまして。nemunekoです=^_^=
WSL2に新しいユーザーを追加して、そのユーザーでVSCodeを開こうとしたら chdir failed
エラーが出てターミナルが死んでしまいました。
今回は、この問題を /etc/wsl.conf
の設定で解決した方法をご紹介します。
それではどうぞ。
この記事が役に立つ方
以下のような状況に遭遇した方向けの記事です。
- WSL2環境で、複数のLinuxユーザーを使い分けたい
-
wsl -u <別ユーザー名>
でログインしてcode .
を実行したら、VSCodeのターミナルが動かなくなった -
chdir(2) failed.: Permission denied
というエラーメッセージが表示された
発生状況
ひょんなことから、新しいユーザが欲しくなったので、早速adduser testuser
でユーザーを作り、wsl -u testuser
でログイン。ここまでは順調です。
そして、意気揚々とカレントディレクトリで code .
を実行。
$ cd ~
$ code .
VSCodeのウィンドウは無事に開きました…と思ったのも束の間、ウィンドウ下部のターミナルに、以下のエラーメッセージが表示されていたのです=TェT=
chdir(2) failed.: Permission denied
ターミナルが使えないと何もできないので原因を調査しました。
原因調査
調査1:パーミッションがおかしい?
Permission denied
って言われたら、まず疑うのはもちろん権限です。
ls -la ~
でディレクトリの所有者を確認したけど、ちゃんと testuser
になってる…。うーん、違うっぽい。
調査2:logを確認
根本原因を突き止めるべく、VSCodeのログを見てみることにしました。
F1
キーでコマンドパレットを開き、Remote-WSL: Show Log
を選択。
ログを眺めていると、以下のログを発見。
[2025-07-05] ... NodeExecServer run: ... -e /home/nemuneko/.vscode-server/...
testuser
で起動したはずなのに、なぜかnemuneko
で起動していることになっている…!
調査3:プロファイルを分けてみる
VSCodeのプロファイルを分ければ別セッションになるのでは?と思い、以下のコマンドを試してみました。
$ wsl.exe -u testuser bash -c "code ~ --user-data-dir ~/.vscode-testuser"
結果:VSCodeのウィンドウは開いたものの、ターミナルは相変わらず同じエラー...
chdir(2) failed.: Permission denied
原因判明
調査の結果、VSCodeのRemote-WSL拡張機能は、複数のユーザでVSCodeを起動できなさそう、ということがわかりました…=TェT=
すなわち。
- 先に
nemuneko
ユーザーでVSCodeを開いていた - Remote-WSLサーバーが
nemuneko
権限で起動 - 後から
testuser
でcode .
を実行しても、既存のサーバーセッションが再利用される -
nemuneko
権限のサーバーがtestuser
のホームディレクトリにアクセスしようとして権限エラー
解決方法:/etc/wsl.conf でデフォルトユーザーを変更
いろいろ試した結果、上手くいった方法は WSLのデフォルトユーザーを一時的に変更する ことでした。
手順
-
WSLに接続しているVSCodeをすべて落とす
-
WSL内で
/etc/wsl.conf
を編集
$ sudo vim /etc/wsl.conf
以下の内容を追記
[user]
default=testuser
- WSLを再起動
# PowerShellまたはコマンドプロンプトで実行
> wsl --shutdown
- もう一度WSLを起動して
code .
を実行
> wsl
$ whoami
testuser
$ cd ~
$ code .
動いた!!!=^ω^=
ターミナルも含めて、完全に testuser
として動作するようになりました!
元に戻す
作業が終わったら、同じ手順で /etc/wsl.conf
の default=nemuneko
に戻すのを忘れずに。
まとめ
VSCodeのRemote-WSL拡張機能が複数ユーザーに対応していないなんて、正直想定外でした。でも /etc/wsl.conf
を書き換えるという原始的な方法で解決できましたが、めんどくさいですね。
ちなみにネットで調べてみると同じようなことに喘いでいる人がいましたね。参考文献として張っておきます。
それではまた。nemunekoでした=^_^=
Discussion