Contents of this directory is archived and no longer updated.

Posts on this page:

Примечание: данный пост перепечатан в связи с закрытием бложиков на spaces.live.com, как имеющий какую-то ценность для автора и/или читателей.


В первой части мы рассмотрели использование PowerShell для добавления DACL (Discretionary Access Control List) к сетевой шаре как для создания списка ACL и получения возможности в дальнейшем работать с этим списком из PowerShell. Данный метод полностью заменяет текущий список DACL сетевой папки, т.е. все текущие участники безопасности будут удалены и заменены теми, которые были указаны в теле скрипта. Теперь стоит поговорить об извлечении и чтении DACL для сетевых папок как для анализа, так и для выборочного добавления/удаления участников безопасности в списке ACL. Класс Win32_Share имеет лишь один метод для добавления ACL списка - SetShareInfo, который полностью заменяет текущий список DACL и не имеет нативного метода добавления частичного DACL к имеющемуся списку DACL. Поэтому для добавления или удаления участников безопасности из этого списка нам потребуется сначала считать этот список, проанализировать, внести необходимые изменения и записать этот список с внесёнными изменениями в ACL сетевой папки.

Процесс извлечения DACL из ACL сетевой шары будет происходить примерно в обратном порядке записи. В предыдущей части я говорил про процесс упаковывания ("инкапсуляции") массива в массив, и сейчас нам придётся обратно расшивать (извлекать) массивы из массивов. Как уже говорилось в первой части, для чтения DACL сетевой папки используется класс Win32_LogicalShareSecuritySettings:


Read more →

Примечание: данный пост перепечатан в связи с закрытием бложиков на spaces.live.com, как имеющий какую-то ценность для автора и/или читателей.


В предыдущей статье я сделал вводну часть по управлению сетевыми папками в PowerShell. В ней я не рассматривал вопрос управления Share Permissions, т.к. это дело весьма непростое. Итак, что нам для этого потребуется? А потребуются нам следующие классы WMI:

Основной класс, который позволит нам извлечь параметры безопасности - Win32_LogicalShareSecuritySettings. Как я говорил в предыдущей статье, упрощённый вариант создания новой сетевой папки - не самый лучшй вариант создания для последующего управления. Сейчас я продемонстрирую вам проблему:


Read more →

Примечание: данный пост перепечатан в связи с закрытием бложиков на spaces.live.com, как имеющий какую-то ценность для автора и/или читателей.


В предыдущих постах я рассказывал про управление списками ACL для объектов файловой системы и реестра. Для этих целей использовались встроенные команддеты Get-Acl и Set-Acl. Весьма тесно с этой темой выступает тема управления правами доступа общего ресурса (т.н. Share Permissions). PowerShell не имеет встроенного механизма управления сетевыми ресусрами, только средствами классов WMI. Управление шарами достаточно очень простое в PowerShell до тех пор, пока это не коснётся вопроса управления Share Permissions. Но начнём с самого простого - создание и удаление сетевого ресурса, а так же маппингом сетевых дисков. Для этого используется WMI класс Win32_Share. По ссылке можно узнать какими свойствами и методами обладает этот класс, поэтому здесь перечислять всё это не буду. Для создания нового сетевого ресурса (шары) нам потребуется метод Create с указанием необходимых параметров (которые так же перечислены по ссылке). Попробуем:


Read more →

Примечание: данный пост перепечатан в связи с закрытием бложиков на spaces.live.com, как имеющий какую-то ценность для автора и/или читателей.


В 3-й части стати Управление ACL в PowerShell я говорил, что не представляется возможным нативно через метод SetOwner изменить владельца объекта на кого-нибудь, кроме себя или группы Administrators (Администраторы). Эту операцию невозможно было сделать и в GUI в Windows 2000/XP. Но в Windows Server 2003 появилась возможность изменять владельца объекта на любого пользователя или группу из GUI. Для этой операции требуется лишь право Se_Restore - Restore directories and files в локальной политике безопасности, разделе User Rights Assignment. По умолчанию данное право дано администраторам (Administrators) и операторам архива (Backup Operators). Однако, данное право не включено по умолчанию. К сожалению .NET пока что не имеет "родного" метода, чтобы включить данное право, в результате чего используя скрипты PowerShell мы не сможем полноценно использовать новую в Windows Server 2003 функцию. Но не всё так плохо, как может показаться - есть обходное решение данной проблемы. Данную проблему решили в проекте PowerShell Community Extensions.

Для использования этой привилегии необходимо установить пакет PowerShell Community Extensions 1.1.1 (там же и описание возможностей, которые включены в эти расширения). После установки пакета можно начинать использовать данное расширение:


Read more →

Примечание: данный пост перепечатан в связи с закрытием бложиков на spaces.live.com, как имеющий какую-то ценность для автора и/или читателей.


При написании скриптов, которые автоматически назначают права NTFS или права доступа к реестру (ну и в других ситуациях) иногда требуется конвертация имени пользователя в его SID и наоборот, у нас есть SID пользователя и нужно узнать его имя в базе SAM или базе Active Directory. Для этих преобразований используется 2 класса - SecurityIdentifier и класс NTAccount. Делается каждая операция в 2 строчки:


Read more →