\\wsl$\Ubuntu\tmp
のようなアドレスをエクスプローラで開けばいいです
これだと Ubuntu ディストリビューションの /tmp フォルダを開けます
後は Windows 上のファイルを扱うようにエディタで開いたりエクスプローラの操作でフォルダ移動したりできます
普段はこれで問題なかったのですが なぜかファイルが読み取り専用になって編集できませんでした
編集できるファイルをもあってその違いを調べると Linux 側のファイルの所有者情報が原因のようでした
Windows からのアクセスは WSL インスタンスの初回起動時に作るユーザの権限になっているようです
root で作られたファイルは Windows から変更できません
root 権限だと /etc とか /usr とかそういうところになってくるので 誤ってエクスプローラでドラッグアンドドロップして移動してしまったりで Linux 側が動作しなくなることを避けるためでしょうか
touch a
sudo touch b
で
-rw-r--r-- 1 user user 0 Mar 5 23:40 a
-rw-r--r-- 1 root root 0 Mar 5 23:40 b
となっていると Windows で
a は書き込みできる
b は読み取り専用
となります
sudo chown user:user b
で b の所有者とグループを a と同じにすると b も書き込みできるようになります
普段は Windows 側で書き込むところを root 権限にしないので問題はなかったのですが Docker を使ってコンテナ内で作業している部分でファイルの編集は Windows でやるとしたときに困りました
コンテナ内では root 権限なので 作るフォルダやファイルがすべて Windows では読み取り専用になってしまいます
コンテナにマウントしたときはホストの user というユーザは認識されてないみたいで ユーザ id の 1000 になってました
「sudo chown 1000:1000 file」 で書き込みできるようになりましたが 毎回は面倒です
WSL2 のローカルに実体を置いて Docker コンテナと Windows から参照するというのがあまり良くないのかもしれません
WSL2 と Docker コンテナからの読み書きが多少遅くなってもいいなら Windows 側に実体をおいたほうがこういう権限問題は起きずに済んで良いのかもしれません