ありがとうございます。
WSLをインストールして、試させていただきます。
windowsでLinuxが使える様になるのであれば、いろいろと出来そうですね。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
icaclsコマンドで管理者アカウントのみを残した状態に変更しました。
このディレクトリおよびファイルを、アクセス権を保持したまま圧縮させ、別ドライブのディレクトリでアクセス権を保持したまま解凍を試みました。
しかし、解凍したときにはicaclsで変更する前の通常の状態に戻ってしまいました。
解凍したときにアクセス権を保持した状態で解凍させるには、どの様な方法で実現可能でしょうか?
圧縮および解凍コマンドは以下の通り
・圧縮:tar -cvf tar-file.tar.gz d:\work\LABO\test
・解凍:tar -xvf tar-file.tar.gz
以下はicaclsの表示内容です。
・アクセス権の変更前
D:\work\LABO>icacls test /t
test BUILTIN\Administrators:(I)(F)
BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
NT AUTHORITY\Authenticated Users:(I)(M)
NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)
BUILTIN\Users:(I)(RX)
BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)
test\aaa.bat BUILTIN\Administrators:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\Authenticated Users:(I)(M)
BUILTIN\Users:(I)(RX)
・アクセス権の変更した状態
D:\work\LABO>icacls test /t
test BUILTIN\Administrators:(OI)(CI)(F)
NT AUTHORITY\SYSTEM:(OI)(CI)(F)
NT AUTHORITY\Authenticated Users:(OI)(CI)(M)
BUILTIN\Users:(OI)(CI)(RX)
test\aaa.bat NT AUTHORITY\SYSTEM:(F)
BUILTIN\Administrators:(F)
・解凍後の状態
E:\work>icacls test /t
test BUILTIN\Administrators:(I)(F)
BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
NT AUTHORITY\Authenticated Users:(I)(M)
NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)
BUILTIN\Users:(I)(RX)
BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)
test\aaa.bat BUILTIN\Administrators:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\Authenticated Users:(I)(M)
BUILTIN\Users:(I)(RX)
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
ありがとうございます。
WSLをインストールして、試させていただきます。
windowsでLinuxが使える様になるのであれば、いろいろと出来そうですね。
ありがとうございました。
管理者権限でrobocopyを使えばとのことですね。試してみたいと思います。
後出し条件ですみませんが、管理者権限の利用が出来ない環境下で、別の方法があれば、教えて下さい。
UNIX/Linux系のコマンドは、WindowsのACLには完全には対応していません。
SELinuxが有効になっていない古典的なUNIX/Linux系環境では、ユーザ、グループ、その他の3つの分類に対して、RWXHの属性を設定できるようになっています。Windows上で実行する場合には、コマンドを実行するユーザーについてユーザーの部分に対してRWXHの属性を設定できるだけです。そもそもWindowsの複雑なACLには対応していないのです。tarファイル形式にアーカイブする際に記録しているファイルのアクセス情報も、ユーザ、グループ、その他の3つの分類に対して、RWXHの属性を記録しているのみであり、Windows上で実行する場合には制限があります。
簡単に言えば、FAT/exFATで管理可能なファイル属性にしか対応していません。
パーティションイメージをddコマンド等で吸い上げて、別のストレージに展開するなら話は別です。
それでも、ファイルやホルダー単位でやりたいのであれば、
icaclsコマンドの/saveオプションでACLの情報をダンプ出力し、出力したファイルを保存したいファイル群と一緒にアーカイヴする。目的の環境でリストアした後に、icaclsコマンドの/restoreオプションでACLを復元するという手順になります。
解凍したときにアクセス権を保持した状態で解凍させるには、どの様な方法で実現可能でしょうか?
tar の「p オプション」を使う人もいますが、それが正解とは言えません。そもそもtarは歴史的に「Tape ARchiver」であり、様々な環境での属性保存用途には、適していないことを知るべきです。そもそも保存されてない「アクセス権」は「再現」されませんし、シンボリックリンクや特殊ファイルはどう処理するべきかという問題があります。
それで、WSL ではどうするかというと、ファイルの全属性を保存、再現する「cpio」コマンドを使うことが一番の正解です。
しかし最近ではコマンドが様々なオプションをサポートする様になったので、「cp -a」や「zip」「gzip」などを、場合によっては組み合わせて使う例もよく見ます。
参考情報)
「cpio は様々なオプションがあって覚えきれ無い」という人へのヒントは「dumpを使う」です。
echo *something* | cpio -dump /somewhare/target_dir
ls *somedir*/* | cpio -dump /somewhare/target_dir
tarコマンドには一応pオプションでファイルのアトリビュートを含めて展開する方法がありますが、せいぜいtarコマンドの実行者をオーナーとして、rxwhの属性を復元する程度しかできません。もともとWindowsに移植された時点でWindowsのACLに完全対応しているわけではありませんし、tar形式のフォーマット自体そこまでの属性情報を記録していないからです。
せいぜい、ACL情報をCACLSコマンドでダンプ出力した後にダンプ出力したファイルとともにアーカイブして、展開後にダンプ出力したファイルを使ってACLを復元するぐらいしかありません。
単純にドライブ間でコピーできればいいのであれば、管理者権限でrobocopyを/COPYALLオプション付きで実行すれば、管理者権限でアクセスできるファイルであればACLで設定されているアクセス権限を完全にコピーできます。