На нескольких наших рабочих станциях для разработчиков мы получали страшные сообщения: «Этот список контроля доступа не имеет канонической формы и поэтому не может быть изменен». ошибка, когда мы пытаемся установить права на определенные папки. Мы не смогли выяснить, что портит эти ACL.
Прямо сейчас единственный известный мне способ исправить это - щелкнуть правой кнопкой мыши поврежденную папку / файл, выбрать «Свойства» и перейти на вкладку «Безопасность». Затем Windows заметит коррупцию и предложит ее исправить. Мне не нравится это, потому что это руководство и требует от пользователя провести некоторые исследования, чтобы выяснить, какая папка / файл поврежден.
Есть ли где-нибудь скрипт или программа, которая сделает это автоматически? Я вижу, что у icacls
него есть /verify
параметр, но он просто показывает мне, что списки ACL для файла / папки повреждены. Он не предлагает ничего исправить.
источник
get-acl path_to_corrupt_file | set-acl -path ptah_to_corrupt_file
.Я наконец смог придумать автоматическое исправление для этого. Когда вы вызываете
Set-Acl
командлет PowerShell , он правильно упорядочивает ACL:Конечно, это может быть родитель испорченного каталога, поэтому вы должны сделать некоторые обходы, чтобы найти виновника. Используйте,
icacls C:\Path\To\Item\With\Suspect\CL /verify
чтобы выяснить, если что-то требует ремонта.В нашей среде Cygwin является вероятным виновником: когда он создает каталоги, ему нравится давать им разрешения в стиле POSIX вместо того, чтобы полагаться на Windows для управления безопасностью файловой системы.
источник
Для меня возникла двойная проблема: неканонический ACL + ошибочное правило, объявленное для NULL SID (WTH?). Я предполагаю, что это было вызвано версией cygwin git.
Во всяком случае, в моем случае повторное применение одного и того же ACL не имело никакого смысла:
Поэтому я должен был явно применить ACL из файла, имеющего правильный, как упомянуто @mschneider
источник
icacls может исправить это также:
Другие удобные команды, эквивалентные chmod 0777 FILE, chown root FILE
источник
Эта проблема появляется при использовании Cygwin. Он пытается эмулировать права доступа к файлам POSIX поверх списков контроля доступа Windows. Это часто приводит к неканоническим спискам ACL, которые являются законными, но не могут быть исправлены с помощью explorer.exe .
Вы можете отключить эту проблемную эмуляцию, установив опцию «noacl», например, в
/etc/fstab
:источник
источник