最近、新しい SSD に Windows 10 をクリーン インストールし、古いデータ ファイルをドライブに復元しました。問題は、バックアップ プログラムにアクセス許可を復元しないように指示したにもかかわらず、アクセス許可が結局台無しになってしまったことです。
すでに実行しましたtakeown /f c:\src /r /d Y
エクスプローラーのプロパティ -> セキュリティにアクセスし、フォルダーに「フル コントロール」権限を持つユーザーを追加して、それを子フォルダーに適用してみました。Windows は 30 分間実行され、その処理が行われているようですが、属性:「読み取り専用」はまだ四角で塗りつぶされたままです。
「読み取り専用」の四角をクリアし、それを再帰的に適用し、Windows をさらに 15 ~ 20 分間実行しましたが、fscking の四角はまだ塗りつぶされたままです。
ICACLS を使う必要があると思いますが、ガイダンスがないと怖いです。これまでこのような状況を解決するために ICACLS を使用したことは、文字通り毎回、問題を悪化させる結果になりました。Unix スタイルのアクセス許可と所有権はよく理解していますが、NTFS アクセス許可については、これまで間違えて扱ったことがあり、毎回苦労しました。
これまで、私は従来の回避策を使って、ブルートフォースでこの問題を解決してきました。Linux を起動し、ディレクトリを再帰的にコピーして (タイムスタンプを保存)、Windows を起動し直し、元のディレクトリを NTFS ボリュームから削除し、NTFS 権限を削除した状態で FAT32 ボリュームからコピーし直すという方法です。しかし、今はそれができません... ディレクトリには 4 GB を超えるファイルが多すぎます。
それで...どうすれば同等のものを実現できるでしょうか (おそらく ICACLS を使用)?
解決:
以下の回答に基づいて、うまくいった方法を以下に示します。
icacls c:\src /reset /T /L /Q
takeown /f c:\src /r /d Y
(念のため、icacls の後に takeown を再実行しました)
attrib -r -h -s c:\src /s /d
結局、この答えこれは、Windows エクスプローラーの UI デザインが非常に貧弱であるという例にすぎません。簡単に言えば、Windows はフォルダーの内容が「読み取り専用ではない」と報告することは決してありません。チェックボックスを使用して、フォルダー内に含まれるファイルの読み取り専用ステータスをクリアまたは設定することはできますが、チェックボックスの状態自体は、現在の状態について意味のあることを示すものではありません。
どうやら、Microsoft の理論は、すべての Explorer フォルダーには、ユーザーの観点からは読み取り専用の隠しシステム ファイルが含まれている (ファイルが存在しない場合は、Explorer は存在すると見なす) というものです。したがって、ユーザーが意図的にそこに置いたファイルが読み取り専用でなくても、すべてのフォルダーには少なくとも 1 つの読み取り専用ファイルが含まれています。ため息。
とにかく、私の問題は解決しました。Gradle と Android Studio は、権限エラーで停止することなくファイルをビルドできるため、ACL をリセットし、所有権を取得し、読み取り専用フラグとシステム フラグ (存在する場合) をクリアすると、問題は解決しました。
答え1
「属性: [✔] 読み取り専用」は、そもそも NTFS 権限フラグではありません。これは、ファイルごとのフラグの完全に別のセットであり、多くの場合「MS-DOS 属性」として知られています。(Linux chattr と比較してください。)
この属性は、「隠し属性」、「システム属性」、「アーカイブ属性」とともに、実際には DOS FAT ファイルシステムに由来するものであるため、ファイルを FAT32 ボリュームにコピーして戻しても削除されません。
再帰的に削除するには、
これらのファイルとフォルダーに対する「属性の書き込み」権限が必要です。
attrib -r -h -s c:\src /s /d
これらの属性は、Linux では xattr としてアクセスできますsystem.ntfs_attrib_be
。例:
setfattr -n system.ntfs_attrib_be -h -v 0x00000020 <filename>