DrvFs内のファイルに所有者やパーミッションを設定可能に・スペシャルファイルを作成可能に
「Build 17063」では相互運用の改良が行われ、「DrvFs」内のファイルに所有者やパーミッションを設定できるようになりました。またスペシャルファイルの作成も可能になりました。
DrvFsとは
「DrvFs」は、WSL環境(Linux環境)にWindowsのボリュームをマウントし、LinuxからWindowsのファイルにアクセスできるようにする仕組みです。Linuxのメタデータのサポート
「DrvFs(Windowsのボリューム)」がLinuxのメタデータをサポートしました。これにより「DrvFs」内のファイルの所有者やパーミッションを「chmod」や「chown」で変更できるようになりました。
さらに「DrvFs」内にFIFOやUNIXソケット、デバイスファイルが作成できるようになりました。
注意事項
「VolFS」同様に、Linux向けの情報はファイルのメタデータ内に保存されます。Linux向けのパーミッション等の情報は、Windowsのパーミッション等とは別に管理され、Windowsのパーミッションには影響を与えません。
ただしWindowsアプリからLinuxのメタデータを含んでいるファイルを開いて保存すると、Windowsアプリはそれらの情報を解釈しないため、Linuxのメタデータがファイルから削除されてしまいます。
この点は「VolFS」と同じですね。
Linuxのメタデータがないファイルは、パーミッション等の設定にデフォルトの設定が指定されているものとして扱われます。
本機能はデフォルトで無効になっている
この機能はデフォルトで無効になっており、デフォルトでは上記の操作を受け付けません。これは本機能が試験的に導入された機能であるためです。
この機能を「Build 17063」で有効にするには、一旦Windowsのボリュームをアンマウントした後、「metadata」オプションを指定して再度Windowsのボリュームをマウントしてください。
メタデータのフォーマットに不具合がある
「Build 17063」で導入したメタデータのフォーマットに不具合があり、Microsoft内部のビルドでこの不具合が修正されています。これは今後リリースされるビルドでメタデータのフォーマットが変わることを意味します。
「Build 17063」で生成されたメタデータは今後のビルドで正常に読み込めなくなるため、「Build 17063」で所有者を変更しても今後のビルドでは設定が維持されません。
つまり所有者の設定を手動で再設定する必要が出てきます。
加えてカスタムデバイスIDを持つデバイスは、今後のビルドで再作成する必要があります。
本機能を有効にするには
この機能を「Build 17063」で有効にする方法です。ここでは例として「C:\(/mnt/c)」を対象に本機能を有効にする方法を紹介します。
1.ボリュームのアンマウント
以下のコマンドを実行し、Windowsのボリュームをアンマウントします。
sudo umount /mnt/c
2.ボリュームのマウント
「metadata」オプションを指定して再度Windowsのボリュームをマウントします。
sudo mount -t drvfs C: /mnt/c -o metadata
以上で完了です。
他のマウントオプションも併用可能
他のマウントオプションも併用可能です。サポートされているマウントオプションは、以下を参照してください。
デフォルトの設定と組み合わせて利用すると良いでしょう。
さっそく試してみよう
「chmod」や「chown」でファイルの所有者やパーミッションを変更できるか試してみましょう。ここでは例として「C:\Users\kledg\test1\test1.txt(/mnt/c/Users/kledg/test1/test1.txt)」ファイルの所有者やパーミッションをLinuxから変更してみます。
1.現在の設定を確認
現在の設定を確認すると、以下のようになっています。ファイルの所有者が「root/root」であり、パーミッションは777になっています。
2.所有者の変更
ファイルの所有者を「kledgeb/kledgeb」に変更してみます。
sudo chown kledgeb:kledgeb test1.txt
ファイルの所有者が「kledgeb/kledgeb」に変わりました。
3.パーミッションの変更
次にパーミッションを変更してみます。
chmod 600 test1.txt
パーミッションが変更されていますね。
(上記画像では勢い余ってsudoがついていますが、ファイルの所有者が自分なのでsudoは必要ありません。)