删除用户在所有子目录中的 NTFS 权限
Remove NTFS permissions of a user in all subdirectories
我正在编写一个脚本,如果帐户超过 7 天,该脚本将删除特定用户。
但是当用户被删除时,我的文件服务器上的 NTFS 权限仍然存在。
如何使用 PowerShell 删除特定用户的所有权限?
您应该永远不要 向单个用户授予权限(主目录和用户配置文件除外)。正如您自己看到的那样,清理起来很麻烦。 始终 创建代表需要访问的特定 functions/roles 的组,并向这些组授予权限。
您可以通过icacls
清理权限:
icacls C:\root\folder /remove DOMAIN\user /t /c
但是请注意,您必须在删除帐户之前执行此操作,因为由于某些原因icacls
无法清除已删除帐户的 SID。
如果您已经删除了该帐户,您可以尝试使用 Get-Acl
和 Set-Acl
:
修复权限
Get-ChildItem C:\root\folder -Recurse -Force | ForEach-Object {
$acl = Get-Acl -LiteralPath $_.FullName
$ace = $acl.Access | Where-Object { $_.IdentityReference -like 'S-1-5-*' }
$acl.RemoveAccessRule($ace) | Out-Null
Set-Acl -LiteralPath $_.FullName -AclObject $acl
}
请注意,您可能需要调整选择要从文件或文件夹的 ACL 中删除的 ACE 的条件。
另请注意,对于 files/folders 所有者既不是用户 运行 代码也不是他的组之一的情况,上述操作将失败。在这种情况下,您可以在 ServerFault 上使用 subinacl
or SetACL
as a last resort, as described in the answers to this question 等工具。
我正在编写一个脚本,如果帐户超过 7 天,该脚本将删除特定用户。
但是当用户被删除时,我的文件服务器上的 NTFS 权限仍然存在。
如何使用 PowerShell 删除特定用户的所有权限?
您应该永远不要 向单个用户授予权限(主目录和用户配置文件除外)。正如您自己看到的那样,清理起来很麻烦。 始终 创建代表需要访问的特定 functions/roles 的组,并向这些组授予权限。
您可以通过icacls
清理权限:
icacls C:\root\folder /remove DOMAIN\user /t /c
但是请注意,您必须在删除帐户之前执行此操作,因为由于某些原因icacls
无法清除已删除帐户的 SID。
如果您已经删除了该帐户,您可以尝试使用 Get-Acl
和 Set-Acl
:
Get-ChildItem C:\root\folder -Recurse -Force | ForEach-Object {
$acl = Get-Acl -LiteralPath $_.FullName
$ace = $acl.Access | Where-Object { $_.IdentityReference -like 'S-1-5-*' }
$acl.RemoveAccessRule($ace) | Out-Null
Set-Acl -LiteralPath $_.FullName -AclObject $acl
}
请注意,您可能需要调整选择要从文件或文件夹的 ACL 中删除的 ACE 的条件。
另请注意,对于 files/folders 所有者既不是用户 运行 代码也不是他的组之一的情况,上述操作将失败。在这种情况下,您可以在 ServerFault 上使用 subinacl
or SetACL
as a last resort, as described in the answers to this question 等工具。