Многие системные администраторы в своей практике сталкиваются с файлопомойками, на которых их коллеги нерадивые назначали права к файлам и папкам напрямую пользователю, а не группе доступа. А пользователей со временем удаляли из домена. Как итог имеем гору файлов и папок, у которых в разделе безопасность мы видим гору sid ов. Чтобы побороть данную проблему предлагаю небольшой powershell скрипт
#Каталог в котором выполнять проверку $Folder="D:\DT$\data" #получаем список всех файлов ,папок и подпапок $resc = gci -recurse $folder #построчно обрабатываем полученный масив foreach($r in $resc) { # Получаем acl лист обьета, в случае ошибки выводим путь до проблемного файла/папки try {$acl = (Get-Item $r.fullname ).GetAccessControl('Access') } catch { "error path" $r.fullname } # отсортируем явно назначенные и содержащие в названии кусок SID $acesToRemoves = $acl.Access | ?{ $_.IsInherited -eq $false -and $_.IdentityReference -like "S-1-*"} # на случай если несколько таких потеряшек у обьекта foreach ( $acesToRemove in $acesToRemoves) { # отфильтровываем пустые переменые дабы избежать ошибок if ($acesToRemove) { $r.fullname #выводим с чем работаем #Удаляем sid из acl листа и применяем новый acl на папку/файл $acl.RemoveAccessRuleAll($acesToRemove) Set-Acl -AclObject $acl $r.fullname } } }
Ну к сожалению ничего не идеально в этом мире, да и пользователи любят поэмы сочинять в названиях файлов. Остается только безотказный способ
ищем проблемные объекты при помощи утилиты AccessEnum https://learn.microsoft.com/ru-ru/sysinternals/downloads/accessenum и чистим ручками
ссылка на оригинал статьи https://habr.com/ru/articles/830534/
Добавить комментарий