2017-01-03 12 views
0

Я пишу скрипт, который удалит определенного пользователя, если учетная запись старше 7 дней.
Но когда пользователь удален, разрешения NTFS на моем файловом сервере остаются.
Как я могу удалить все разрешения для определенного пользователя с помощью PowerShell?Удалите разрешения NTFS для пользователя во всех подкаталогах

+0

Упоминайте, почему вы меняете мой вопрос? –

+0

Я бы заподозрил, что тот, кто поставил ваш вопрос, сделал это, потому что он не прилагает никаких усилий для решения проблемы самостоятельно. –

+0

Привет, в вашем вопросе нет кода, что вы пробовали? – sodawillow

ответ

3

Вы должны никогда не предоставлять разрешения отдельным пользователям (за исключением домашних каталогов и профилей пользователей). Как вы сами видите, это беспорядок для очистки. Всегда создавать группы, представляющие конкретные функции/роли, которым требуется доступ, и предоставлять разрешения для этих групп.

Вы можете очистить разрешения с помощью icacls:

icacls C:\root\folder /remove DOMAIN\user /t /c 

Заметим, однако, что вы должны сделать это до того удаления учетной записи, потому что по какой-то причине icacls не может очистить SIDs удаленных учетных записей ,

Если вы уже удалили учетную запись, вы можете попробовать исправить разрешения с Get-Acl и Set-Acl:

Get-ChildItem C:\root\folder -Recurse -Force | ForEach-Object { 
    $acl = Get-Acl -LiteralPath $_.FullName 
    $ace = $acl.Access | Where-Object { $_.IdentityReference -like 'S-1-5-*' } 
    $acl.RemoveAccessRule($ace) | Out-Null 
    Set-Acl -LiteralPath $_.FullName -AclObject $acl 
} 

Следует отметить, что вам может понадобиться отрегулировать условия для выбора ACE, чтобы удалить из файла или ACL папки ,

Обратите внимание, что приведенное выше не будет выполнено для файлов/папок, где владелец не является пользователем, выполняющим код или одну из его групп. В такой ситуации вы можете использовать такие инструменты, как subinacl или SetACL, в крайнем случае, как описано в ответах на this question на ServerFault.