WindowsのファイルシステムであるNTFSでは、ファイルを暗号化する事ができます。
EFSとはEncrypting File Systemの略です。
ファイルサーバーのデータ移行などの時に、まれにEFSで暗号化されているファイルが存在し、コピーできないことがあります。
Windows上の標準的なコピーツール、copyコマンド、xcopyコマンド、
robocopyコマンドではEFSで暗号化されたファイルはコピーできないためです。
Windows Server 2008/Windows Vista以降の
robocopyには、/EFSRAWオプションが追加されたことを知ったので、これをちょっと検証してみました。
暗号化されたファイルを複合化せず、暗号化されたままコピーしてくれるのかと期待して。
環境
コピー元になるのはWindows 7 SP1で、これが移行元になる旧サーバーです。
コピー先はWindows 8.1で、移行先となる新サーバーを想定しています。
2台ともActive Directoryドメインに参加していない、ワークグループでの運用です。
旧サーバーはD:\TESTフォルダを共有していて、そこに暗号化されたファイルがあるとします。
新サーバー上で
robocopyを実行して、暗号化されたファイルがどのようにコピーされるかを検証しました。
(写真1)旧サーバー上の共有フォルダ
共有フォルダ内に3つのファイルがあります。
(写真2)旧サーバー上の「norimakiで暗号化.txt」
「norimakiで暗号化.txt」は、旧サーバー上のnorimakiというユーザーが暗号化しています。
(写真3)旧サーバー上の「TestUserで暗号化.txt」
「TestUserで暗号化.txt」は、旧サーバー上のTestUserというユーザーが暗号化しています。
(写真4)旧サーバー上のローカルユーザー
norimakiもTestUserも、どちらもAdministratorsグループに属しています。
つまり管理者の権限があります。
(写真5)ここから旧サーバーから新サーバーに対して、TestUserで接続する部分のログ
C:\Windows\system32\cmd.exe |
C:\>net use 2.168.0.4\TEST /d 2.168.0.4\TEST が削除されました。
C:\>net use 新しい接続は記憶されます。
一覧にエントリが存在しません。
C:\>net use 2.168.0.4\TEST password /user:Windows7SP1\TestUser コマンドは正常に終了しました。
C:\>dir 2.168.0.4\TEST ドライブ 2.168.0.4\TEST のボリューム ラベルは ボリューム です ボリューム シリアル番号は F810-2C3B です
2.168.0.4\TEST のディレクトリ
2014/03/08 15:31 <DIR> . 2014/03/08 15:31 <DIR> .. 2014/03/08 13:44 16 norimakiで暗号化.txt 2014/03/08 13:09 16 TestUserで暗号化.txt 2014/03/08 13:09 16 暗号化してないファイル.txt 3 個のファイル 48 バイト 2 個のディレクトリ 136,263,761,920 バイトの空き領域
C:\>type 2.168.0.4\TEST\norimakiで暗号化.txt アクセスが拒否されました。
C:\>type 2.168.0.4\TEST\TestUserで暗号化.txt アクセスが拒否されました。
C:\> |
(写真6)新サーバーから旧サーバーにTestUserで接続
新サーバーから「net use \旧サーバー パスワード /user:旧サーバー\TestUser」で接続して、旧サーバーの共有フォルダを見たところです。
(写真7)新サーバーから暗号化されているファイルを開くと
新サーバー上のメモ帳で、旧サーバー上の暗号化されたファイルを開こうとすると「アクセスが拒否されました」になります。
norimakiで暗号化されたファイルも、TestUserで暗号化されたファイルも同じです。
(写真8)ここから旧サーバーから新サーバーに対して、norimakiで接続する部分のログ
C:\Windows\system32\cmd.exe |
C:\>net use 新しい接続は記憶されます。
一覧にエントリが存在しません。
C:\>net use 2.168.0.4\TEST password /user:Windows7SP1\norimaki コマンドは正常に終了しました。
C:\>dir D:\TEST ドライブ D のボリューム ラベルは Data です ボリューム シリアル番号は 22D4-C0F1 です
D:\TEST のディレクトリ
2014/03/09 21:52 <DIR> . 2014/03/09 21:52 <DIR> .. 2014/03/08 13:44 16 norimakiで暗号化.txt 2014/03/08 13:09 16 暗号化してないファイル.txt 2 個のファイル 32 バイト 2 個のディレクトリ 450,627,051,520 バイトの空き領域
C:\>type 2.168.0.4\TEST\norimakiで暗号化.txt 13:44 2014/03/08 C:\>type 2.168.0.4\TEST\TestUserで暗号化.txt アクセスが拒否されました。
C:\> |
(写真9)新サーバーから旧サーバーにnorimakiで接続
新サーバーでnet use /d *で、一度すべてのネットワーク接続を切断します。
新サーバーから「net use \旧サーバー パスワード /user:旧サーバー\norimaki」で接続して、旧サーバーの共有フォルダを開くと、さっきのTestUserで接続したのと同じように見えます。
(写真10)norimakiで暗号化されたファイルは開くことができる
新サーバーのメモ帳で、旧サーバーの共有フォルダ上の「norimakiで暗号化されたファイル」は開いて読むことができます。
(写真11)TestUserで暗号化されたファイルはアクセス拒否
新サーバーのメモ帳で、旧サーバーの共有フォルダ上の「TestUserで暗号化されたファイル」を開こうとすると、「アクセスが拒否されました」となります。
(写真12)ここから/EFSRAW無しで
robocopyでのファイルコピーを実行部分のログ
C:\Windows\system32\cmd.exe |
C:\>robocopy 2.168.0.4\TEST D:\TEST /E /R:0 /W:1
------------------------------------------------------------------------------- ROBOCOPY :: Windows の堅牢性の高いファイル コピー -------------------------------------------------------------------------------
開始: 2014年3月10日 10:17:25 コピー元 : 2.168.0.4\TEST\ コピー先 : D:\TEST\
ファイル: *.*
オプション: *.* /S /E /DCOPY:DA /COPY:DAT /R:0 /W:1
------------------------------------------------------------------------------
3 2.168.0.4\TEST\ 100% 新しいファイル 16 norimakiで暗号化.txt 新しいファイル 16 TestUserで暗号化.txt 2014/03/10 10:17:46 エラー 5 (0x00000005) ファイルをコピーしています 2.168.0.4\TEST\TestUserで暗号化.txt アクセスが拒否されました。
100% 新しいファイル 16 暗号化してないファイル.txt
------------------------------------------------------------------------------
合計 コピー済み スキップ 不一致 失敗 Extras ディレクトリ: 1 0 0 0 0 0 ファイル: 3 2 0 0 1 0 バイト: 48 32 0 0 16 0 時刻: 0:00:21 0:00:21 0:00:00 0:00:00
速度: 1 バイト/秒 速度: 0.000 MB/分 終了: 2014年3月10日 10:17:46
C:\>type D:\TEST\norimakiで暗号化.txt 13:44 2014/03/08 C:\>type D:\TEST\暗号化してないファイル.txt 13:09 2014/03/08 C:\> |
(写真13)新サーバーから/EFSRAW無しの
robocopyを実行した場合の受け側フォルダ
新サーバー上で以下のコマンドを実行します。
robocopy 2.168.0.4\TEST D:\TEST /E /R:0 /W:1
するとnorimakiで暗号化されたファイルと、暗号化していないファイルはコピーできますが、TestUserで暗号化したファイルはコピーされませんでした。
robocopyのログにも「エラー 5 (0x00000005) ~中略~ アクセスが拒否されました」と記録されています。
(写真14)コピー後のnorimakiで暗号化されたファイルと暗号化されていないファイルは読み取り可能
(写真15)ここから/EFSRAW付きでrobocopyでのファイルコピーを実行
C:\Windows\system32\cmd.exe |
C:\>del D:\TEST /s D:\TEST\*、よろしいですか (Y/N)? y 削除したファイル - D:\TEST\norimakiで暗号化.txt 削除したファイル - D:\TEST\暗号化してないファイル.txt
C:\>robocopy 2.168.0.4\TEST D:\TEST /E /R:0 /W:1 /EFSRAW
------------------------------------------------------------------------------- ROBOCOPY :: Windows の堅牢性の高いファイル コピー -------------------------------------------------------------------------------
開始: 2014年3月10日 10:23:38 コピー元 : 2.168.0.4\TEST\ コピー先 : D:\TEST\
ファイル: *.*
オプション: *.* /S /E /DCOPY:DA /COPY:DAT /EFSRAW /R:0 /W:1
------------------------------------------------------------------------------
3 2.168.0.4\TEST\ 100% 新しいファイル 16 norimakiで暗号化.txt 新しいファイル 16 TestUserで暗号化.txt 2014/03/10 10:23:59 エラー 5 (0x00000005) ファイルをコピーしています 2.168.0.4\TEST\TestUserで暗号化.txt アクセスが拒否されました。
100% 新しいファイル 16 暗号化してないファイル.txt
------------------------------------------------------------------------------
合計 コピー済み スキップ 不一致 失敗 Extras ディレクトリ: 1 0 0 0 0 0 ファイル: 3 2 0 0 1 0 バイト: 48 32 0 0 16 0 時刻: 0:00:21 0:00:21 0:00:00 0:00:00
速度: 1 バイト/秒 速度: 0.000 MB/分 終了: 2014年3月10日 10:23:59
C:\>type D:\TEST\norimakiで暗号化.txt アクセスが拒否されました。
C:\>type D:\TEST\TestUserで暗号化.txt
C:\>type D:\TEST\暗号化してないファイル.txt 13:09 2014/03/08 C:\> |
(写真16)新サーバーから/EFSRAW付きのrobocopyを実行した場合の受け側フォルダ
新サーバー上で以下のコマンドを実行します。
robocopy 2.168.0.4\TEST D:\TEST /E /R:0 /W:1 /EFSRAW
今度はTestUserで暗号化したファイルもコピーされました。
しかし緑色ではなく(暗号化されておらず)、サイズもゼロバイトです。
(写真17)norimakiで暗号化したファイルはアクセス拒否
/EFSRAW無しでコピーしたら暗号化されたままコピーされ、しかもコピー後のファイルを読むことができました。
しかし/EFSRAW付きでコピーすると暗号化されたままコピーされますが、コピー後のファイルを読むことができません。
(写真18)その他のファイルは読み取れるが
暗号化されていないファイルは問題無し。
しかしTestUserで暗号化されたファイルは、コピー先には暗号化されていない状態でコピーされ、しかもサイズがゼロバイトなので、読み取れても意味がない感じ。
うーん。robocopyで/EFSRAWオプションを付けた時の挙動がよくわからない。
今のままでは/EFSRAWは付けない方が無難な気がする。
今回はここまで。
気が向いたらまた続きをやってみます。