http://support.microsoft.com/en-us/kb/950934描述了当管理员组成员使用资源管理器导航到管理员组有权访问的文件夹时,将提示用户“单击继续以永久访问此文件夹”的方式。
当他们这样做时,Explorer 会更改文件夹的 ACL,以授予该特定用户对该文件夹的完全控制权。MS 链接准确地描述了要求这样做的设计约束。
但是,它破坏了该文件夹的权限设置,使得集中管理权限变得不可能。例如,如果指定用户后来从管理员组中删除,该 ACL 条目仍然存在,允许他们访问该文件夹。
我并不想禁用 UAC(实际上喜欢我非常乐意使用其他工具以提升的方式浏览和查看文件(我不明白提升和非提升之间的区别)。
最终目的是运行 MS 链接中描述的解决方法之一(使用单独的文件导航器能运行提升,或定义一个单独的组来控制对白名单文件夹的访问),但是,Explorer 始终会随意破坏文件夹的 ACL,因此无法确定需要在哪里应用这些解决方法(缺乏定期审核每个文件夹的 ACL 更改)。
如果我在资源管理器中以非提升权限运行时尝试访问受限文件夹,我只想收到标准的“拒绝访问”消息。
是否有一个设置(每个盒子上的一次性设置,或通过 GPO)可以删除此“永久获取访问权限”提示,同时保留 UAC 的其他设施?
注意:我完全理解为什么会出现这个提示、它意味着什么以及为什么会有这种行为(尽管我不一定同意这个设计决定)。但是,我应该指出,我并不想讨论与我的用户的工作实践相关的解决方法,也不想讨论 UAC 或管理员组成员身份的优点/缺点。
答案1
不,那里没有。
唯一真正的解决方案是使用 Windows 资源管理器以外的其他程序来浏览文件(当然,以提升的权限运行)。
问题在于,浏览器explorer.exe
最初使用非管理员访问令牌启动(为了显示 GUI),并且任何新会话(即使是以管理员身份启动的会话)都会继承此受限访问令牌行为。有一种解决方法是使用管理令牌启动初始 Explorer 实例,但随后从 GUI 启动的任何内容都会继承管理访问令牌,从而有效地使 UAC 无效。
答案2
对于本地登录的管理用户来说,实际上确实有一种安全的解决方法。
- 打开相关文件夹的属性 > 安全对话框来编辑其 ACL。
然后添加交互的安全主体并授予其“列出文件夹内容”的权限,这将自动启用以下权限:
- 遍历文件夹/执行文件
- 列出文件夹/读取数据
- 读取属性
- 读取扩展属性
之所以有效,是因为 Windows 不再依赖您的特权/管理员凭据来遍历文件夹结构和列出文件夹内容。由于“身份验证”为 INTERACTIVE 不需要评估特权凭据来枚举文件夹,因此它不需要踢出 UAC 提示。
答案3
TL;DR:与本地管理员组并行创建另一个组,并将所有有权成为管理员的人添加到这两个组中。然后,允许第二个组进入所有文件和文件夹的 ACL。不要以内置管理员用户身份登录或操作。
这个问题困扰了我好久了。当我浏览各种文件夹结构时,不断需要将自己从文件夹 ACL 中移除(以及其他没有自行清理的用户),这让我很沮丧。因此,我通读了问题中提到的文章。它让我了解了写这个答案所需的内容,我建议在继续之前先阅读它。
最初困扰我的问题是作者的断言“这使得对权限的集中管理实际上变得不可能”。起初,我同意这一点,但经过思考,我想起了“最小特权”。本地管理员帐户以及本地管理员组的目的之一就是违反该原则。最终,您无法从该用户或该组成员那里夺走任何东西。是的,从短期来看,他们可能会被拒绝,但他们仍然有能力(不使用漏洞)通过授予自己对被拒绝的任何资源的访问权限来击败拒绝。因此,微软似乎认为必须始终至少有一个用户能够以某种方式始终访问所有内容。公平地说。该论点超出了这个答案的范围。
那么,这对“权限集中管理”有何影响?似乎为了符合该原则,您需要半假装(我稍后会解释这一半)本地管理员和本地管理员组不存在。请记住,他们的权限不能受到限制,这意味着他们违反了该原则。这就是为什么该帐户的密码如此保密,该组的成员资格如此令人垂涎的原因。因此,如果您想要相同的有效访问权限,则在每个驱动器的根目录中,您需要拥有自己的用户或组,该用户或组具有完全控制权,理想情况下,所有子文件夹和文件都会继承该权限。
但是,我们知道,在实践中,该用户或组通常会被拒绝访问,但这只是问题的一部分。“管理员”应该是最终的仲裁者,决定谁有权访问或无权访问任何给定的文件或文件夹。“管理员”体现在该固定用户中。是的,我们中的许多人为了方便而以“管理员”的身份操作,但当我们这样做时,我们就违反了原则。因此,为了解决这个问题,我们可以方便地记住(这是假装部分的一半)管理员组存在,我们可能是该组的成员。我们可以授予上述组(或用户)(可能是我们自己)对资源的访问权限(首先应该继承该权限),而不必担心合规性或安全性要求,因为该组(或用户)已经拥有对该资源的授权,因为他们已经被授权担任“管理员”。
但是,这有一个问题。我仍然不想放弃以“管理员”身份登录的便利,所以我将该用户添加到该组中 - 但仍然不起作用。该用户是固定用户,并且很特殊,如果不禁用 UAC,就无法消除其“特殊”特性。但是,这就是重点。微软正试图推动我们更多地遵守该原则。通过将我的用户添加到这两个组,我能够授予自己对资源的访问权限,同时保持合规性和安全性,并避免烦人的对话框。
答案4
您可以简单地以管理员身份运行 CMD 或 PowerShell。
dir *.* /w /s
或者以管理员身份在 PowerShell 中执行:
文件夹:
Get-ChildItem -Recurse -Directory | Measure-Object | %{$_.Count}
文件:
Get-ChildItem -Recurse -File | Measure-Object | %{$_.Count}
PS:Get-ChildItem 不适用于长度超过 260 个字符的路径