robocopyでERROR 31 (0x0000001F)エラー発生

ファイルサーバー移行で、robocopyコマンド使用時に、普段見慣れないエラーを見かけました。

エラー31 (0x0000001F) NTFS セキュリティをコピー先ファイルにコピーしています 。
システムに接続されたデバイスが機能していません。

もしくは

ERROR 31 (0x0000001F) Copying NTFS Security to Destination Directory
A device attached to the system is not functioning.

というエラーが出るのです。いったいどうして?

環境・前提条件

今回の環境は、

Windows Server 2016 → Netapp

へのrobocopyによるファイルサーバー移行でした。

結論、NetAppにrobocopy実行する時は/copy:datsoオプションが必要

ソースに Windows Mandatory Level 権限がある場合、 Robocopy に /copy:datso オプションを使用する必要がありますか? - NetApp

Robocopy に

/copy:datso オプション

を利用すれば、このエラー31を回避してファイルサーバー移行が実行できます。

理由としましては、NetAppのONTAP は「Mandatory Level」権限をサポートしていないためです。

今回、NetAppへのrobocopyでエラー31が発生しましたが、それ以外のWindows以外のNASでも上記、エラーが発生することがあるかもしれません。

Windows ServerからWindows Server共有へのコピーには通常発生しないエラーになります。

/copy:datso オプションとは?

上記は、robocopyのヘルプになります。

robocopy /?
  • D=データ
  • A=属性
  • T=タイムスタンプ
  • X=代替データ ストリームをスキップ
  • S= セキュリティ =NTFS ACL
  • O= 所有者情報
  • U= 監査情報

robocopyのデフォルト値では/COPY:DATとなりますので、今回のエラー31は発生しませんが、/COPYALL((/COPY:DATSOU)とかで実施すると発生します。

つまり、NetAppではUオプション(監査情報)が対応していないということになります。

Uオプションの「監査情報」とは?

ファイルやフォルダのプロパティを開き、

「セキュリティ」タブ - 「詳細設定」ボタン - 「監査」タブ

の設定をファイサーバー移行時に、コピーするオプションがUオプションの監査情報になります。

この監査プロパティとは「監査ポリシー」ともいわれ、

コンピューター上の個々のファイルとフォルダーに監査ポリシーを適用することができます。それには、アクセス許可の種類を設定することによって、成功したアクセス試行または失敗したアクセス試行をセキュリティ ログに記録します。

https://docs.microsoft.com/ja-jp/windows/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder

アクセスログを記録するための設定になります。

「Mandatory Level」権限とは?

これは

  • 必須整合性コントロール(MIC、Mandatory Integrity Control)
  • Windows整合性レベル

といわれるものです。

具体的に、以下のコマンドを実行した時に、「Mandatory Level」というキーワードが出てきます。

whoami /all

これは、UAC(ユーザーアクセスコントロール)で知られる権限レベルです。

UACは、ユーザーのその権限レベル(Mandatory Level)をコントロール(変える)ことが出来るという意味です。

  • 「system」 LocalSystem等のサービスアカウントに割り当てられる
  • 「high」UACの管理者ユーザーに割り当てられ、盾マークの管理者権限
  • 「medium」UACの一般ユーザーに割り当てられ、盾マークがない一般権限
  • 「low」IEで実行されるプロセスに割り当てらる
  • 「untrusted 」Anonymousと同等
  • 「trusted installer」更新プログラムなどをインストールするプロセスに割り当てられる

mediumが一般的な標準権限ですね。

実は、フォルダやファイルの監査プロパティを「表示」しようとした時に、

盾マーク

が出現していました。

ここの部分のつくりが、NetAppではちょっとWindowsと違うようですね。

NetAppで監査ポリシーが設定出来ないわけではないようですが、

NTFS監査ポリシーの設定は、NTFSセキュリティ記述子に関連付けられているNTFSのシステム アクセス制御リスト(SACL)にエントリを追加することによって行います。 その後、セキュリティ記述子をNTFSファイルおよびディレクトリに適用します。 これらのタスクはWindows GUIによって自動的に処理されます。 セキュリティ記述子には、ファイルやフォルダのアクセス権を適用するための随意アクセス制御リスト(DACL)、ファイルやフォルダを監査するためのシステム アクセス制御リスト(SACL)、またはSACLとDACLの両方を含めることができます。

https://library.netapp.com/ecmdocs/ECMLP2372139/html/GUID-74A14A3F-30EC-4437-95D6-57AB46F40490.html

robocopyによる監査ポリシーのコピーにはエラーとなる結果でした。

robocopyでERROR 31 (0x0000001F)エラー発生」への2件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です