【问题标题】:powershell ACLs Apply to this folder onlypowershell ACLs 仅适用于此文件夹
【发布时间】:2016-05-04 06:13:36
【问题描述】:

在设置安全描述符时,各种资源提供 PropagationFlags 和 InheritanceFlags 的组合来获得所需的 Apply to。不幸的是,有关这些标志的文档很少,而对这些标志的含义的清晰解释甚至更少。然而,当我使用这些来源的组合时,我没有得到想要的结果。具体来说,要实现仅应用到=这个文件夹,两个标志都应该是无,但是当我这样做时,结果是应用到这个文件夹、子文件夹和文件。有效的组合是 PropagationFlags="InheritOnly" 和 InheritanceFlags="None"。我正在使用 powershell 设置 ACL。 有人可以评论一下为什么每个人都声称他们都不应该得到这个文件夹,而它显然不起作用?

【问题讨论】:

  • 不确定问题的原因,但您可以尝试根据需要手动设置权限,然后使用powershell获取acl进行调试

标签: powershell acl


【解决方案1】:

这些标志记录在 MSDN 上:PropagationFlagsInheritanceFlagsACL Propagation Rules 的组合。如有疑问,我通常会使用 GUI 手动创建访问规则,然后使用 (Get-ACL c:\path).Access 查看它的外观。

要创建“仅此文件夹”权限,您需要将继承和传播都设置为“无”。例如:

$acl = Get-Acl .\test
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule "BUILTIN\Users","ReadAndExecute", "None", "None","Allow"
$acl.AddAccessRule($rule)
Set-Acl -Path .\test -AclObject $acl

请注意,如果BUILTIN\Users 已有限制较少的规则,AddAccessRule 将忽略更改。您需要使用 $acl.ModifyAccessRule("Set",$rule,[ref]$null) 之类的东西来修改现有的。

【讨论】:

  • 我不确定你是否阅读了这篇文章,我明确表示如果我将两者都设置为 None,它就不起作用,唯一有效的组合就是上面所说的。
  • 我不确定你是否测试过我的脚本。 1 分钟前我在一个新文件夹上执行了它,我得到了This folder only
  • 我不是说,它在你的环境中不起作用,但在我的环境中不起作用,可能还有其他问题,因为我从未发现过这样的问题。如果我使用你的代码,我会应用到这个文件夹、子文件夹和文件,就好像忽略了标志一样。
  • 哪个操作系统?如果您使用 GUI 创建规则,它会将值设置为什么?
  • 请参阅更新答案中的“ACL 传播规则”链接。 inherit=None, Propagation=InheritOnly 是无效(被忽略)的组合,因为没有继承任何内容。无-无是this folder only。在具有相同操作系统和不同版本的另一台计算机上进行测试。特定计算机上可能存在错误,但这仍然不会使我的答案出错。每个人都声称它应该是 None-None 因为这是正确的组合
猜你喜欢
  • 2020-02-29
  • 2019-12-21
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多