Удалить разрешения NTFS для файлов данных из предыдущей установки Windows

Удалить разрешения NTFS для файлов данных из предыдущей установки Windows

Недавно я сделал чистую установку Windows 10 на новый SSD и восстановил старые файлы данных на диске. Проблема в том, что даже несмотря на то, что я сказал программе резервного копирования НЕ восстанавливать разрешения, они все равно испортились.

Я уже выполнилtakeown /f c:\src /r /d Y

Я попробовал зайти в свойства Explorer -> безопасность, добавил своего пользователя с разрешением "ПОЛНЫЙ КОНТРОЛЬ" к папке и применил его к дочерним папкам. Windows работала полчаса, предположительно выполняя это, но атрибуты: "Только чтение" ВСЕ ЕЩЕ были заполнены квадратом.

Я очистил квадрат «Только чтение», применил его рекурсивно, Windows поработала еще 15–20 минут... а чертов квадрат ВСЕ ЕЩЕ заполнен.

Я думаю, мне нужно использовать ICACLS... но я боюсь делать это без руководства. Буквально каждый раз, когда я КОГДА-ЛИБО использовал ICACLS в прошлом, чтобы попытаться исправить ситуацию, подобную этой, это заканчивалось усугублением проблемы. Я прекрасно понимаю права доступа и владельца в стиле Unix, но права доступа NTFS избивали меня каждый раз, когда я совершал ошибку, связываясь с ними.

Раньше я использовал свой традиционный обходной путь, чтобы исправить это методом подбора: загрузиться в Linux, рекурсивно скопировать каталог (сохраняя временные метки) на том FAT32, загрузиться обратно в Windows, удалить исходный каталог с тома NTFS, затем скопировать его обратно с тома FAT32 с очищенными разрешениями NTFS. Теперь я не могу этого сделать... в каталоге слишком много файлов размером 4+ гигабайта.

Итак... как я могу добиться чего-то сопоставимого (предположительно, используя ICACLS)?

Решение:

Исходя из ответа ниже, вот что сработало.

icacls c:\src /reset /T /L /Q

takeown /f c:\src /r /d Y(Я перезапустил takeown после icacls, на всякий случай)

attrib -r -h -s c:\src /s /d

Оказывается, согласноЭтот ответ, это просто случай, когда у Windows Explorer чрезвычайно плохой дизайн пользовательского интерфейса. Проще говоря, Windows НИКОГДА не сообщит, что содержимое папки "не только для чтения". Вы можете использовать флажок, чтобы попытаться снять или установить статус "только для чтения" для файлов, содержащихся в папке, но состояние флажка само по себе не указывает ничего значимого об их текущем состоянии.

По-видимому, Microsoft рассуждает так: каждая папка Explorer содержит скрытый системный файл, который с точки зрения пользователя доступен только для чтения (а если файла там нет, Explorer делает вид, что он есть). Таким образом, каждая папка содержит по крайней мере один файл, доступный только для чтения, даже если ни один файл, намеренно помещенный туда пользователем, не является доступным только для чтения. Вздох.

В любом случае, моя проблема теперь решена. Gradle и Android Studio могут собирать файлы, не умирая из-за ошибки прав доступа, поэтому сброс ACL, принятие владельца и очистка флагов «только для чтения» и «системный» (если они вообще были) решили проблему.

решение1

"Атрибуты: [✔] Только чтение" — это не флаг разрешения NTFS с самого начала. Это совершенно отдельный набор флагов для каждого файла — часто называемый "атрибутами MS-DOS". (Сравните с Linux chattr.)

Этот атрибут, наряду с атрибутами «Скрытый», «Системный» и «Архивный», на самом деле возник в файловой системе DOS FAT, поэтому вы не избавитесь от них, копируя файлы на том FAT32 и обратно.

Чтобы удалить их рекурсивно,

  1. У вас должно быть разрешение «Запись атрибутов» для этих файлов и папок.

  2. attrib -r -h -s c:\src /s /d


К этим атрибутам можно получить доступ в Linux как к system.ntfs_attrib_bexattr, например:

setfattr -n system.ntfs_attrib_be -h -v 0x00000020 <filename>

Связанный контент