端くれプログラマの備忘録 Windows [Windows] WSLへファイルをコピーすると作成される拡張子Zone.Identifierというファイルは何?

[Windows] WSLへファイルをコピーすると作成される拡張子Zone.Identifierというファイルは何?

Zone.Identifierという拡張子のファイルは、Windowsのセキュリティ機能によって生成される代替データストリーム (Alternate Data Stream, ADS) です。このファイルは、Windowsが特定のファイルの「出所」や「セキュリティ情報」を管理するために作成します。

Zone.Identifierファイルの役割

このファイルは、特にインターネットやネットワーク経由でダウンロードされたファイルに関連付けられることが多く、以下の情報を保存します:

  1. どこから取得されたか(ゾーン情報)
    ファイルがどの「セキュリティゾーン」(例: インターネット、イントラネット、ローカルマシン)から取得されたかを示します。
  2. セキュリティの警告をトリガーする
    この情報により、Windowsがそのファイルを「ブロック」したり、開こうとしたときに警告を表示したりします。
  3. 安全性の判断に使用
    実行可能ファイルやスクリプトなどの安全性をチェックするために利用されます。

Zone.Identifierが作成される原因

WSLのストレージ(Linuxファイルシステム)にWindowsのエクスプローラーを使ってファイルをコピーした場合、Windowsがそのファイルを「外部リソース」とみなし、Zone.Identifierを作成することがあります。

中身の確認

Zone.Identifierファイルは、テキスト形式で保存されています。以下のような内容が含まれる場合があります:

[ZoneTransfer]
ZoneId=3
  • ZoneId=3: インターネットゾーンから取得されたファイルを示します。
  • ZoneId=2: ローカルイントラネットゾーン。
  • ZoneId=0: ローカルコンピュータゾーン(信頼されたゾーン)。

問題になる場合

通常、Zone.Identifierファイルが存在しても、Linux側で直接問題を引き起こすことはありませんが、以下の場合に影響する可能性があります:

  1. ファイルの扱いが期待通りでない(例: 実行権限の影響)。
  2. 不要なファイルが増えることでディレクトリが煩雑になる。

対処方法

1. 作成を防ぐ

Windowsのエクスプローラーを使わず、WSL内でファイルを移動またはコピーすることで、Zone.Identifierが作成されるのを防げます。例えば、WSL内で以下のコマンドを使用:

cp /mnt/c/source-file ./destination

2. 自動削除する

Linux上で定期的にZone.Identifierを削除するスクリプトを実行する方法もあります:

find . -type f -name "*.Zone.Identifier" -delete

3. Windowsのセキュリティ設定を変更

Zone.Identifierの作成を抑制するために、ローカルグループポリシーエディターを使って以下を変更します:

  1. gpedit.mscを開く
  2. 「ユーザーの構成」 → 「管理用テンプレート」 → 「添付ファイルの管理」に移動。
  3. 「インターネットからのファイルのセキュリティゾーン情報を保持しない」を有効にする。

結論

Zone.Identifierファイルはセキュリティ情報を管理するWindowsの仕組みの一部ですが、Linux環境やWSL内では不要です。上記の方法で適切に対処することで、運用がスムーズになります。