Mac のファイルを外付けドライブに保存し、そのドライブを Windows システムに接続すると、ファイルが暗号化されることが多いのはなぜですか?
一見すると暗号化されているようには見えないので、開くことができるので、何を意味しているかを説明します。
しかし、よく見ると、Windowsエクスプローラーでは緑色で表示されることがあります
Windows の暗号コマンドでは暗号化済みとして表示され、その属性プロパティも暗号化済みとして表示されます。
これに遭遇したのは私だけではありません。例えばWindows 7 で暗号化されたファイルを一覧表示するにはどうすればいいですか? ある投稿者は次のように書いています。「外付け HDD をクリーンアップしていたら、暗号化されたファイルが 150 個見つかりました。コンピューターで暗号化を使用していないので、それらのファイルが何で、どこにあるのかを知りたかったのです。簡単に入手できるいくつかのダウンロードからのものだったことがわかりました。または、PC 上の「_MACOSX」フォルダーを見ました。それらは常に暗号化されています。」
私が遭遇した例は、Rails で書いたプログラムで、コマンドで作成した「scaffoldingtest1」というディレクトリrails new scaffoldingtest1
と、その親ディレクトリを外付けハードドライブにコピーしたというものでした。
Mac ユーザーからの Adobe 関連の PDF もいくつか見ました。
そして、それらは Windows マシンで暗号化されたかのように暗号化されており、そのコンピューターのその Windows ユーザー名からのみ表示できます。これは、Windows の暗号化のプロパティで示されています。そして、そのコンピューターのそのユーザーはそれらを復号化できます。しかし、どういうわけか、それらはそのように暗号化されました。その外付けドライブを別の Windows コンピューターに持っていっても、それらを読み取ることはできません。
OSX のどの設定が原因なのか疑問に思っています。
注: 一部のモデレーターは長いコメントスレッドを削除して重要な情報を失う傾向があるため、2020年11月21日20:13英国時間時点でバックアップされたコメントスレッドへのリンクをここに示します。https://pastebin.com/raw/f2Aytv6W
答え1
その理由は、macOS に組み込まれているアーカイブ プログラムと、さまざまな Windows バージョンに組み込まれている解凍プログラムとの互換性に関する既知の問題です。
Finder に組み込まれている「圧縮」ツールを使用すると、ZIP ファイルが作成されます。ZIP ファイルには、特に各ファイルの「外部ファイル属性」と呼ばれるものが含まれています。これらの属性はホスト システムに依存します (つまり、これらの属性はさまざまなオペレーティング システムで同じように認識されるとは限りません)。
残念ながら、macOS ツールがファイルに付ける属性の 1 つは、Windows の組み込み解凍ツールによって、ファイルが「暗号化済み」としてマークされていると解釈されます (これは、NTFS ファイル システムに組み込まれている単一ファイル暗号化の特殊な形式です)。つまり、解凍すると、ファイルに暗号化属性が付けられ、Windows エクスプローラーでその名前が緑色で表示されます。
ただし、ファイルのプロパティを簡単に開いて、「暗号化」属性のチェックマークを外すことができるため、これには大きな欠点はありません。ファイルの内容は実際には暗号化されていないため、ファイルは通常どおり開くことができます。
この問題は、Mac で別の圧縮ツールを使用するか、Windows で別の解凍ツールを使用することで回避できます。
技術的な詳細は次のとおりです。
この問題は、Windows の解凍ソフトが各ファイル/フォルダの ZIP ヘッダーの「外部ファイル属性」を誤って解析することで発生します。ヘッダーのこの要素はホストに依存しているため、解凍ソフトは中央ディレクトリのファイル ヘッダーの「作成者バージョン」と呼ばれる要素をチェックして、どのオペレーティング システムでファイルが作成されたかを調べる必要があります。macOS の圧縮ツールは、ここで「Unix」の属性値 3 を正しく保存します。
残念ながら、Windows ツールはこの値を無視し、ファイル属性を常に Windows で作成されたものとして解釈します。「暗号化」の問題は、Windows で作成された ZIP ファイルが、Microsoft によって定義されたファイル属性定数 (FILE_ATTRIBUTE_<...>) に従ってファイル属性を保存することから生じます。特に、値 0x4000 で定義された FILE_ATTRIBUTE_ENCRYPTED は、暗号化されたファイルまたはディレクトリを意味します。ただし、Unix システムでは、POSIX 定数が使用されます。ここで、S_IFDIR は「これはフォルダーです」という意味の属性であり、通常は値 0040000 (0x4000 に相当) として定義されます。