DirectorySecurity C# назначать разрешения локальной группы с удаленного сервера

Я использую следующий код для назначения разрешений групп домена для папки из приложения C#:

        DirectoryInfo myDirectoryInfo = new DirectoryInfo(@"\\Server002\G$\permissionTest");
        DirectorySecurity myDirectorySecurity = myDirectoryInfo.GetAccessControl();
        myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(@"Domain\Sec_Group", FileSystemRights.Modify, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
        myDirectoryInfo.SetAccessControl(myDirectorySecurity);

В качестве примера я выполняю эту программу на сервере с именем server001 и использую этот код для применения доменных групп к списку ACL папки, находящейся на сервере с именем server002, и она отлично работает.

Теперь мне нужно добавить группу безопасности, которая находится на сервере 002, в папку, но с программой, которая выполняется на сервере 001, например, добавить локальную группу "Гости" server002, но действие добавить эту группу в ACL папки должны быть выполнены из программы C#, которая работает на сервере 001.

Может кто-нибудь сказать, пожалуйста, как этого добиться?

1 ответ

Решение

Я нашел альтернативный способ применения разрешений. Я использовал программу psexec для запуска удаленных команд, поэтому я смог сделать удаленный вызов на нужный сервер и запустить команду icacls для применения разрешений, затем я поместил команду на C# для выполнения инструкции. Код, который я сделал, выглядит так:

        foreach (string server in servers)
        {
            string localPermissionsCommand = @"/C psexec /accepteula \\" + server + " icacls " + @"G:\theFolder\ /grant " + @"""Local server group""" + ":(OI)(CI)RX";
            System.Diagnostics.Process.Start("CMD.exe", localPermissionsCommand);
        }

Таким образом, вы перебираете серверы переменных, чтобы выполнить команду на всех серверах, которые вам нужны. Этот подход работал для меня.

Другие вопросы по тегам