Покажу пример, как с помощью PowerShell можно управлять настройками безопасности для файлов и каталогов (т.е. как работать с ACL).
Полный перечень доступных вариантов перечисления System.Security.AccessControl.FileSystemRights смотреть здесь.
Удаляем добавленное нами ранее правило:
Для файлов всё выполняется по аналогии, с той лишь разницей, что вместо класса DirectorySecurity нужно использовать FileSecurity.
Добавляем правило для каталога:
# Экспериментальный каталог $dir = "C:\000" # Если каталог существует - удаляем его со всем содержимым if ([System.IO.Directory]::Exists($dir)) { Remove-Item -Path $dir -Recurse } # Создаём каталог New-Item -Path $dir -ItemType Directory | Out-Null # Получаем значение ACL каталога $acl = Get-Acl -Path $dir # Запретим пользователю "Host\Вася" права на создание файлов в этом каталоге: # Аккаунт, для которого хотим добавить запись в ACL каталога $account = "Host\Вася" # Интересующие нас права доступа к объекту $rights = [System.Security.AccessControl.FileSystemRights]::CreateFiles # Перечисление разрешающее, или запрещающее доступ. Доступные варианты: Allow, Deny. # Мы хотим запретить, поэтому - Deny $controlType = [System.Security.AccessControl.AccessControlType]::Deny # Получаем текущий ACL каталога (объект класса # System.Security.AccessControl.DirectorySecurity) $dirSec = [System.IO.Directory]::GetAccessControl($dir); # Создаём новое правило доступа $rule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule ` -ArgumentList $account, $rights, $controlType # Добавляем созданное нами правило доступа к набору уже имеющихся правил $dirSec.AddAccessRule($rule) # Назначаем каталогу модифицированные нами настройки доступа [System.IO.Directory]::SetAccessControl($dir, $dirSec);
Удаляем добавленное нами ранее правило:
# Теперь удаляем добавленную нами ранее запись из ACL # Получаем значение ACL каталога $acl = Get-Acl -Path $dir # Интересующие нас права доступа к объекту $rights = [System.Security.AccessControl.FileSystemRights]::CreateFiles # Перечисление разрешающее, или запрещающее доступ. Доступные варианты: Allow, Deny. # Мы хотим запретить, поэтому - Deny $controlType = [System.Security.AccessControl.AccessControlType]::Deny # Получаем текущий ACL каталога (объект класса # System.Security.AccessControl.DirectorySecurity) $dirSec = [System.IO.Directory]::GetAccessControl($dir); # Создаём новое правило доступа $rule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule ` -ArgumentList $account, $rights, $controlType # Добавляем созданное нами правило доступа к набору уже имеющихся правил $dirSec.RemoveAccessRule($rule) # Назначаем каталогу модифицированные нами настройки доступа [System.IO.Directory]::SetAccessControl($dir, $dirSec); # Вот собственно и всё...
Комментариев нет:
Отправить комментарий