Windows 10でLinuxを使う (その11) - WSLからWindowsファイルのパーミッションを扱う(未来編)

【連載】

にわか管理者のためのLinux運用入門

【第110回】Windows 10でLinuxを使う (その11) - WSLからWindowsファイルのパーミッションを扱う(未来編)

[2018/01/23 08:00]後藤大地 ブックマーク ブックマーク

サーバ/ストレージ

WSLからWindowsファイルパーミッションを扱えない

連載第105回の「Windows 10でLinuxを使う(その7) - Windowsから編集しよう」で、WindowsからWSLで使うファイルを作成してもパーミッションの扱いがうまくいかない、ということを紹介した。今回取り上げるのはそれとは逆のパターンだが、どのみちこの部分はWindows 10 Fall Creators UpdateのWSLではあまり実装が進んでいない部分だ。しかし次のアップデートで、完璧とは言えないものの、かなり状況が良くなりそうだというニュースが入ってきた。

Microsoftは2018年1月12日(米国時間)、「Chmod/Chown WSL Improvements|Windows Command Line Tools For Developers」において、開発中のWindows 10 Insider Build 17063でWSLのファイルシステムに新しい機能を追加したと発表した。この新機能によってWSLからWindowsのファイルとしてFIFOファイル、UNIXソケットファイル、デバイスファイルが作成できるようになったほか、ユーザー/グループの指定やパーミッション(読み込み、書き込み、実行)の設定ができるようになったと説明がある。

Ubuntu on WSLからDrvFsのマウント状況をチェック (Windows 10 Fall Creators Update)

WSLではWindowsのファイルを扱うために「DrvFs」と呼ばれるファイルシステムを提供している。WSLから見ると/mnt/cにマウントされているファイルシステムがDvrFsだ。現在リリースされているWSLのDrvFsでは、ファイルにはアクセスできるものの、パーミッションの変更は機能しないようになっている。Insider Build 17063ではWSLからWindowsファイルのパーミッションが変更できるように、専用のメタデータを持つようにDrvFsが拡張されている。これが今回特に注目される新機能だ。

Windowsのパーミッションメタデータを変更できるようになったのではなく、別途WSL用のパーミッションメタデータが追加されたという点がポイントだ。つまり、「Windowsのパーミッションメタデータ」と「WSL DrvFsのパーミッションメタデータ」という、2つのメタデータが1つのファイルに対して保持される。動きを理解するにはこの仕組みを理解しておく必要がある。

2つのメタデータを理解する

Chmod/Chown WSL Improvements|Windows Command Line Tools For Developers」には動作を理解するためのわかりやすい動作例が掲載されているので、これを見ると話が早いだろう。まず次の動作例だ。

Insider Build 17063実装機能の動作例その1 - 資料: Microsoft提供

上記動作例のfile.txtというファイルはWindowsのファイルだ。これに対してWSLからchmod 0466 file.txtを実行して書き込み権限を抜いてから書き込みを行い、パーミッションどおりに書き込みが機能しないことを確認している。続けてこれをWindows側のメモ帳で編集して書き込みを行っている。WSLからは書き込みができないのに、Windowsからは書き込みができる。これが開発中のDrvFsの特徴的なところだ。

つまり、chmodで変更したパーミッションはWSLからの操作に対してのみ有効で、Windows側には影響を与えていないことがわかる。次はこの動作例だ。

Insider Build 17063実装機能の動作例その2 - 資料: Microsoft提供

bar.bazもWindowsのファイルだ。このファイルはWindowsで書き込みが禁止されている。これに対してWSLからは読み込み、書き込み、実行の全てのパーミッションを許可した状態でbar.bazに書き込みを実施するが、権限がないとして動作が拒否されている。

つまり、現在の実装ではWSLからパーミッションの設定ができるようになったものの、DrvFsでは基本的にWindowsのパーミッションが最も強いパーミッションとして機能し、DrvFsに新しく追加されたパーミッションはLinuxに対して機能はするものの、大元にあるWindowsのパーミッションを超えることはできない、といった仕組みになっていることになる。WindowsパーミッションはWSLからは変更できない仕組みになっている。

今回追加されたパーミッションメタデータがマウントする段階でリニューアルされるのか、いったん作成されたパーミッションデータが永続的に保持されるのか、それは実際に使ってみないとわからない。また、もしかすると2つのメタデータを保持するというInsider Build 17063の実装ではなく、DrvFsからWindowsのパーミッションを変更できるように実装が変更されるかもしれないし、セキュリティを考えるとそれはないかもしれない。

最終的にどの方法が実装されるにせよ、少なくとも、Windows 10 Fall Creators Updateよりも状況が良くなることは間違いなさそうだ。WSLからDrvFsにファイルを作成してそれなりに使えるようになるのは実現しそうである。Windowsのホームディレクトリ以下のファイルはWSLからも扱いたいし、この辺りがもっとシームレスに使えるようになると嬉しいところだ。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
3409
2
【連載】にわか管理者のためのLinux運用入門 [110] Windows 10でLinuxを使う (その11) - WSLからWindowsファイルのパーミッションを扱う(未来編)
開発中のWindows 10 Insider Build 17063でWSLのファイルシステムに新しい機能が追加された。この新機能によってWSLからWindowsのファイルとしてFIFOファイル、UNIXソケットファイル、デバイスファイルが作成できるようになったほか、ユーザー/グループの指定やパーミッション(読み込み、書き込み、実行)の設定ができるようになった。今回はそのなかからパーミッションに関して新機能を取りあげる。
https://news.mynavi.jp/itsearch/files/mynavi20151210_linux_300-250.jpg
開発中のWindows 10 Insider Build 17063でWSLのファイルシステムに新しい機能が追加された。この新機能によってWSLからWindowsのファイルとしてFIFOファイル、UNIXソケットファイル、デバイスファイルが作成できるようになったほか、ユーザー/グループの指定やパーミッション(読み込み、書き込み、実行)の設定ができるようになった。今回はそのなかからパーミッションに関して新機能を取りあげる。

会員登録(無料)

AI人材に必要なもの
セキュリティ・キャンプ2017 - 精彩を放つ若き人材の『今』に迫る
教えてカナコさん! これならわかるAI入門
RPA入門
パスワード管理アプリの選び方
国家主導型サイバー攻撃
情報セキュリティ事故対応アワード2017
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る