【问题标题】:Powershell Script to add Administrators with full permissions adds Admin group with NO permissions用于添加具有完全权限的管理员的 Powershell 脚本添加了没有权限的管理员组
【发布时间】:2021-06-03 17:40:08
【问题描述】:

我们有一个多年来管理不善的共享云端硬盘。完全控制权授予没有理由拥有完全权限的用户。自然,他们删除了管理员,因为“他们不需要看到我的东西。”

为了收回对我网络上所有内容的控制权,我尝试创建一个 Powershell 脚本来做两件事:

  1. 以递归方式获取每个文件夹和文件的所有权
  2. 添加我的默认管理员组并授予它完全控制权

第 1 步很有效,但第 2 步只能让我走到一半。我的脚本成功添加了 Admin 组,但它没有授予任何权限。

请原谅这个脚本是多么的粗糙,它有点像弗兰肯斯坦的怪物,因为我复制粘贴了我在网上找到的几个不同的脚本来做到这一点。

function Recurse-Folder($folderPath, $identity){

 Get-ChildItem $folderPath -Recurse |

 Foreach-Object {
  Take-Ownership $_.FullName $identity 
  }
}


function Take-Ownership($object, $identity) {

 # Give ownership of object to default admin group
 takeown.exe /A /F $object


 # Create new ACL
 $acl = Get-Acl -Path $object
 
 # Set properties
 # $identity = "BUILTIN\Administrators"
 $fileSystemRights= "FullControl"
 $inheritanceFlags = "None"
 $propagationFlags = "None"
 $type = "Allow"
 
 # Create new rule
 $ruleArgs = $identity, $fileSystemRights, $inheritanceFlags, $propagationFlags, $type
 $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($ruleArgs)
 
 # Apply new rule
 $acl.SetAccessRule($rule)

 (Get-Item $object).SetAccessControl($acl)


}


$Path = '\\ShareServer1\Share\'
$identity = 'BUILTIN\Administrators'
# $identity = 'NetAdmin'

Take-OwnerShip $Path $identity
Recurse-Folder $Path $identity


Write-Host
Write-Host Done...
Read-Host

【问题讨论】:

    标签: powershell permissions active-directory file-permissions folder-permissions


    【解决方案1】:

    $inheritanceFlags = "None"; $propagationFlags = "None" - 这意味着您只向$object 本身添加权限,其中没有文件和文件夹。这导致了这个(我为此使用了$identity = 'Everyone'):


    我建议您通过 GUI 手动设置所需的 ACL,然后使用 (Get-Acl -Path '\\x\share\TestFolder').Access | ? {-not $_.IsInherited} 查找正确的 Inheritance\Propagation 组合。


    对于子文件夹或文件上的Enable inheritance,您可以使用$acl.SetAccessRuleProtection($false,$true)$acl.SetAuditRuleProtection($false,$true)。阅读docs

    【讨论】:

    • 感谢您的回复!我的 Take-Ownership 函数将每个文件夹/文件作为对象递归,这就是为什么我只专注于为当前对象添加权限。一切都作为当前对象轮流。我单独留下了继承和传播标志,因为我不想更改任何现有的继承属性。
    猜你喜欢
    • 2017-09-04
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    相关资源
    最近更新 更多