0

我正在尝试从网络共享的所有子目录中删除用户。

我尝试了以下命令:ICACLS X:\ /remove:g username /T

该命令运行没有失败(尽管由于 shard 驱动器的大小需要 3.5 小时)但是在我检查权限后,用户的权限没有从任何地方删除。

如果我导航到我知道用户有权访问的特定文件夹并在那里运行命令(例如 ICACLS X:\subdirectory /remove:g username /T ),它就可以正常工作。

只有当我尝试从根 X:\ 运行它时才会出现此问题,在这种情况下,不会删除任何权限。

任何想法为什么会这样?

PS 我在运行命令的帐户的 root 上有 F 访问权限

4

1 回答 1

0

应该用icacls /T. 除非运行该命令的用户无法读取某些目录。但是,如果在文件夹上启用了继承,您可能到处都有管理员。

一个简单的 PS 脚本就可以做到。通过一些尝试/捕捉,$acl | Set-Acl可以将其用作非特权会话中的干模式。对于特权会话,这将有效地替换目录上的 ACL。

$path = "X:"
$username = "Domain\User"
Get-Item -Path $path -Directory -Recurse | %{
    $acl = Get-Acl -Path $_.FullName
    $aces = $acl.Access | Where-Object { -not $_.IsInherited -and $_.IdentityReference.Value -eq $username }

    if ($aces -ne $null -and $aces.Count -gt 0) {

        Write-Host "Found $($aces.Count) ACE granted for $username on $($_.FullName)"

        foreach($ace in $aces) {
            $acl.RemoveAccessRule($ace)
        }
        $acl | Set-Acl -Path $_.FullName
    }
}
于 2021-10-22T13:59:42.793 回答