Есть ли автоматический способ обхода файловой системы и удаления любых записей ACL, которые ссылаются на недопустимые идентификаторы безопасности в любой версии Windows с NTFS?
icacls может это сделать:
Имя ICACLS [/ grant [: r] Sid: perm [...]] [/ deny Sid: perm [...]] [/ remove [: g |: d]] Sid [...]] [/ T] [/ C] [/ L] [/ Q] [/ setintegritylevel Level: policy [...]]
/remove[:[g|d]] Sid removes all occurrences of Sid in the ACL. With
:g, it removes all occurrences of granted rights to that Sid. With
:d, it removes all occurrences of denied rights to that Sid.
Вы также можете проверить неправильные записи:
ICACLS name / verify [/ T] [/ C] [/ L] [/ Q] находит все файлы, ACL которых не соответствует канонической форме или длина которых несовместима с счетчиком ACE.
Может быть, это потому, что я запускаю это на сервере 2003, но это не дает мне полезных результатов.
ICACLS name / verify [/ T] [/ C] [/ L] [/ Q] находит все файлы, ACL которых не соответствует канонической форме или длина которых несовместима с счетчиком ACE.
Я не уверен, что это должно делать, но ничего полезного для меня это не дает. У меня есть папка с неизвестным SID.
ICACLS имя папки
возвращает записи ACL, включая «Не было выполнено сопоставление между именами учетных записей и идентификаторами безопасности». Он не сообщает мне, для какого SID не удалось получить сопоставление.
ICACLS имя папки / проверить
Все это говорит мне: «Успешно обработан 1 файл; Не удалось обработать 0 файлов». Звучит здорово, но каков был результат обработки?
Я получаю точно такие же результаты, выполняя это для любых отдельных файлов в папке. Чтобы удалить идентификаторы безопасности, вам необходимо знать, что они собой представляют. И это не очень полезный метод получения списка идентификаторов безопасности, которые нужно очистить.