概要
NASのフォルダでアクセス制御設定ごとフォルダ階層をコピーする方法です。
環境
Windowsメインの環境で、
LinuxのNASを利用している想定です。
具体的な型番はTS5410Dですが、Buffalo製のNAS全般に当てはまると思います。
操作対象
※あらかじめNASのIPを192.168.123.x
とします。
- コピー元
- \\192.168.123.x\SharedFolder\original\*
- このoriginalフォルダにはアクセス制御設定がしてあります。
- コピー先
- \\192.168.123.x\SharedFolder\imitation\*
あらかじめ、Windows資格情報には192.168.123.x
にユーザー名admin
で登録しておきます。
さらに、コマンドで移動しておきます。
cd "\\192.168.123.x\SharedFolder\"
NASの設定
NASでLVMの共有ファルダを作成すると、
Webコンソールを利用して各ユーザーのアクセス制御ができるのは、
作った共有フォルダのトップ階層のみで、それ以下は、
Windows側からフォルダのプロパティを開いて構成する必要があります。
割と手間なのでCUIのrobocopyというコマンドを利用することにします。
設定
失敗
以下のコマンドで「全部コピー!!簡単!!」と甘く見ていました。
robocopy /MIR /COPYALL /B ".\original\" ".\imitation\" /XF *
その結果、エラーメッセージで精神的に反撃を食らいました。
エラー 1314 (0x00000522) NTFS セキュリティをコピー先ディレクトリにコピーしています \\192.168.0.185\SnR\test12\
クライアントは要求された特権を保有していません。
「権限あるし!」とか言っても無理でした。
「考えうる最高権限でアクセスしてるんだけど?」と言っても変わりません。
※たぶん仕様だからです。
icaclsでシンプルにアクセス権制御をする方法があるようです。
成功
robocopy /MIR /COPY:DATSO /B ".\original\" ".\imitation\" /XF *
※管理者権限が必要です。
※NASへアクセスする資格情報も管理者権限もしくは、
「アクセス許可の変更」権限を持ったアカウントで登録しておきましょう。
原典
Robocopy | Microsoft Docs
Robocopyのコマンドラインオプションは非常に難解です。
私がアクセス制御の仕組みを理解しきれていないからかもしれません。
また、バージョンによってコマンドラインオプションが変更されているそうです。
Excelsior!