Добавление групп безопасности AD в папку без разрешения наследования - PullRequest
0 голосов
/ 16 апреля 2019

Я добавляю группы ADG в разрешения для папок (разрешения применяются правильно). Как я могу предотвратить добавление наследуемых групп ADG

Я попробовал почти все и вариант I.G.

$InheritanceFlag=[System.Security.AccessControl.InheritanceFlags]@("ContainerInherit,ObjectInherit") $InheritanceFlag=[System.Security.AccessControl.InheritanceFlags]::"ContainerInherit,ObjectInherit" $InheritanceFlag=[System.Security.AccessControl.InheritanceFlags]"ContainerInherit,ObjectInherit" $InheritanceFlag=[System.Security.AccessControl.InheritanceFlags]"ContainerInherit" $InheritanceFlag=[System.Security.AccessControl.InheritanceFlags]"ObjectInherit"

Также пробовал следующие комбинации с вышеперечисленным.

$PropagationFlag=[System.Security.AccessControl.PropagationFlags]"None" $PropagationFlag=[System.Security.AccessControl.PropagationFlags]::None $PropagationFlag=[System.Security.AccessControl.PropagationFlags]::InheritOnly $PropagationFlag=[System.Security.AccessControl.PropagationFlags]::NoPropagateInherit

А также с кавычками. В дополнение к:

$ACL.SetAccessRuleProtection($true,$true) |Set-Acl $sFoldPath $ACL.SetAccessRuleProtection($false,$false) |Set-Acl $sFoldPath $ACL.SetAccessRuleProtection($true,$false) |Set-Acl $sFoldPath

Я занимаюсь этим 4/5 дней и загружаю почти все ссылки на первых 2 страницах моих различных результатов поиска. Плюс прошлой ночью и сегодня изучил каждое предложение от StackOverflow, прежде чем отправлять сюда справку.

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


$InheritanceFlag=[System.Security.AccessControl.InheritanceFlags]@("ContainerInherit,ObjectInherit") # "ContainerInherit,ObjectInherit"
$PropagationFlag=[System.Security.AccessControl.PropagationFlags]"None" # "InheritOnly" # NoPropagateInherit # This property is significant only when the value of the InheritanceFlags enumeration is not None.
$AccessControlType=[System.Security.AccessControl.AccessControlType]"Allow "


    ForEach ($oCol in $oCSVData){
                   $sFoldPath=$oCol.'FolderPath'.Trim()           
           $IdentityReference=$oCol.'GroupNames'.Trim()

If ($IdentityReference.Substring($IdentityReference.Length - 2) -eq '_R') {
        $sPermission= ('ReadAndExecute','Read','ListDirectory')
  }  Else {
        $sPermission='Modify' 
} 

$ACL = Get-Acl $sFoldPath

$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($IdentityReference,$sPermission,$InheritanceFlag,$PropagationFlag,'Allow')

$ACL.SetAccessRuleProtection($true,$true)

$ACL.AddAccessRule($AccessRule) 

$ACL | Set-Acl $sFoldPath
    }

Мои требования заключаются в том, что мне нужно связать группу AD с папкой, назначить разрешения и убедиться, что разрешения групп AD видны в контекстном окне; и не назначаются в качестве специальных разрешений. Наконец, разрешения групп объявлений не наследуются.

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Если вы ищете, чтобы пользователи могли просматривать содержимое каталога и иметь доступ к файлам в этом каталоге, вам нужен только флаг наследования ObjectInherit, а не флаги распространения. Похоже, вы просто пытаетесь добавить доступ к определенной папке для определенной группы, поэтому, если вы не пытаетесь удалить унаследованные права (например, действительно ли вы хотите удалить права для учетной записи SYSTEM или администраторов домена?), Вы можно пропустить шаг SetAccessRuleProtection. Я думаю, что это должно делать то, что вы хотите:

$InheritanceFlag=[System.Security.AccessControl.InheritanceFlags]"ObjectInherit" # ObjectInherit ensurs only objects are accessable, not subfolders
$PropagationFlag=[System.Security.AccessControl.PropagationFlags]"NoPropagateInherit"

ForEach ($oCol in $oCSVData){
    $sFoldPath=$oCol.'FolderPath'.Trim()           
    $IdentityReference=$oCol.'GroupNames'.Trim()

    $sPermission= If ($IdentityReference.Substring($IdentityReference.Length - 2) -eq '_R') {
         'ReadAndExecute,ListDirectory'
    }  Else {
         'Modify' 
    } 

    $ACL = Get-Acl $sFoldPath

    $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($IdentityReference,$sPermission,$InheritanceFlag,$PropagationFlag,'Allow')

    $ACL.AddAccessRule($AccessRule) 

    $ACL | Set-Acl $sFoldPath
}
0 голосов
/ 16 апреля 2019

У меня есть скрипт, который делает почти то же самое, что вы просите.Вот что я нашел, что работает:

$folderACL = Get-ACL (Path\to\folder)

$inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit"
$propagation = [system.security.accesscontrol.PropagationFlags]"None"

$accessRule = New-Object system.security.accesscontrol.filesystemaccessrule("Domain\User","Modify", $inherit, $propagation, "Allow")

$folderACL.SetAccessRule($accessRule)

#Set folder inheritance to off
$folderAcl.SetAccessRuleProtection($True,$false)

Set-Acl (Path\to\folder) -AclObject $folderAcl
...