文件权限“管理员:完全控制”。为什么总是不够用?

AnT*_*AnT 5 user-accounts administrator permissions windows-10

考虑以下情况。

假设我在我的机器上注册了两个交互式本地用户帐户:(组Admin成员Administrators)和AliceUsers组成员)。假设我的硬盘驱动器上有一个Test具有以下安全设置的文件夹:

Owner : Alice
Permissions:
  System : Full Control
  Administrators: Full Control
  Alice : Full Control
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用Admin帐户登录并尝试打开文件夹Test,Windows 最初会拒绝这样做。它将显示一个消息框说

"You don't currently have permissions to access this folder"
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是:为什么?我以Admin-Administrators组成员的身份登录- 因此我应该完全控制该文件夹。为什么 Windows 说我目前没有权限?

现在,上述消息框还将为我提供“单击继续以永久访问此文件夹”的机会。如果我点击“继续”,我将被允许打开文件夹Test。并且,因此,安全设置Test将更改为

Owner : Alice
Permissions:
  System : Full Control
  Administrators: Full Control
  Alice : Full Control
  Admin : Full Control
Run Code Online (Sandbox Code Playgroud)

如您所见,Windows 自动向Admin: Full Control列表中添加了一个额外的条目。之后,我将能够Test不受任何限制地访问。但是,上面的安全权限集对我来说似乎是多余的。它Administrators: Full Control从一开始就已经包含了条目。为什么这还不够?

所以,我的第二个问题是:为什么 Windows 需要额外的Admin: Full Control条目才能最终Admin实现“完全控制”。

这种行为背后的形式逻辑是什么?


一些说明

请注意,这个问题不是关于我的Admin帐户不是“可以为所欲为的全能管理员”。我不希望我的Admin帐户是全能的。事实上,在最基本的层面上,我并不关心我的Admin帐户的任何特殊权利。它只是属于某个组的某个帐户。

我的问题是关于通过组成员资格授予的文件系统访问权限。

考虑另一个例子。假设我创建了一些名为 的随机用户组Ugly Ducklings。并且我增加了普通用户AliceBobUgly Ducklings组。

然后我创建DucklingTest具有以下权限的文件夹

Owner : Alice
Permissions:
  Ugly Ducklings : Full Control
Run Code Online (Sandbox Code Playgroud)

现在,如果我以身份登录,Bob我确实可以完全控制DucklingTest文件夹(!)。

为什么?

Bob是全能的管理员吗?不。我Bob有任何特权吗?不。我是否必须以Bob某种方式“提升”才能访问DucklingTest?不。

那么,为什么Bob要完全控制DucklingTest文件夹?

简单。BobDucklingTest文件夹具有完全控制权,因为它BobUgly Ducklings组的成员,并且Ugly Ducklings组已被授予对DucklingTest. 故事结局。

为什么同样的逻辑不适用于Adminand AdministratorsAdminAdministrators组的成员,组Administrators已被授予对Test文件夹的完全控制权限。这里缺少什么?在这种情况下,Windows 试图通过对组成员施加看似额外的限制来强制执行什么样的额外“控制” Administrators

Dav*_*ill 3

如果我单击“继续”,我将被允许打开文件夹 Test

\n\n

下面解释为什么Windows自动添加一个额外的条目Admin: Full Control to the list

\n\n
\n

假设已启用用户帐户控制 (UAC),并且您使用 Windows\n 资源管理器访问您不\xe2\x80\x99 没有读取权限的文件夹。

\n\n

此外,该文件夹未同时标记为“隐藏”和“系统\n”属性。在这种情况下,Windows 资源管理器会显示一个对话框,\n 提示您以下内容:

\n\n

“您当前没有\xe2\x80\x99t 访问此文件夹的权限。单击\n继续永久获得对此文件夹的访问权限”

\n\n

笔记:

\n\n
    \n
  • 在 Windows Vista 和 Windows Server 2008 中,第二句不包含单词 \xe2\x80\x9cpermanently\xe2\x80\x9d;它只是说\xe2\x80\x9c单击“继续”以\n访问此文件夹。\xe2\x80\x9d
  • \n
\n\n

然后,您可以选择单击“继续”或“取消”。(默认选择“继续”。)

\n\n
    \n
  • 如果单击“继续”,UAC 会尝试代表您获取管理权限。

  • \n
  • 根据控制 UAC 提升提示行为的 UAC 安全设置,以及您是否是管理员组的成员,系统可能会提示您同意或提供凭据。

  • \n
  • 或者,可能根本不会提示您。如果 UAC 可以获得管理权限,则后台进程将更改文件夹及其所有子文件夹和文件的权限,以授予您的用户帐户对它们的访问权限。

  • \n
  • 在 Windows Vista 和 Windows Server 2008 中,后台进程会授予您的用户帐户读取和执行权限。在更高版本的 Windows 中,此过程会授予您的用户帐户完全控制权。

  • \n
\n\n

此行为是设计使然。但是,由于 UAC 提升的典型模式是使用管理权限运行提升的程序的实例,因此用户可能期望通过单击“继续”,\n 这将生成 Windows 资源管理器的提升实例,而不是永久\n文件系统权限的更改。

\n\n

但是,这种期望是不可能的,因为 Windows Explorer\xe2\x80\x99s\n 设计不支持在交互式用户会话的不同安全上下文中运行多个流程实例。

\n\n

如果禁用 UAC,则无法提升 UAC。

\n\n
    \n
  • 由管理员组成员运行的所有程序(包括 Windows 资源管理器)始终具有管理权限。

  • \n
  • 因此,管理员不需要使用提升来访问需要管理权限的资源。

  • \n
\n\n

例如,如果某个文件夹仅向管理员组和系统帐户授予访问权限,则管理员可以直接浏览该文件夹,而不会提示更改该文件夹的权限。\n\xe2\x80\x99s 权限。

\n\n
    \n
  • 如果用户没有读取权限,Windows 资源管理器将显示前面描述的对话框。

  • \n
  • 但是,如果禁用 UAC,Windows 无法通过 UAC 提升提示代表用户请求管理凭据。

  • \n
  • 因此,Windows 不会启动具有管理权限的后台进程来更改文件系统权限。

  • \n
\n\n

但是,如果用户单击“继续”并且文件夹\xe2\x80\x99s 当前安全描述符授予用户读取和更改\n 对象\xe2\x80\x99s 权限的权限,Windows 将在\n 用户\xe2\x80\x99s 当前安全上下文并修改文件夹\xe2\x80\x99s 权限以\n 授予用户更大的访问权限,如前所述。

\n\n

用户可能有权从对象所有权或对象\xe2\x80\x99s 访问控制列表(ACL) 读取和更改对象\xe2\x80\x99s\n 权限。

\n
\n\n

当您在 Windows 资源管理器中单击“继续”进行文件夹访问时,您的用户帐户将添加到该文件夹​​的 ACL 中

\n\n
\n\n

我以管理员身份登录 - 管理员组的成员

\n\n
\n

因此我应该完全控制该文件夹。为什么 Windows 说我当前没有权限?

\n
\n\n

调用的帐户Admin不是内置帐户(名为AdministratorAdministrator)。

\n\n

内置管理员帐户不需要权限提升,而您创建并放入管理员组的用户则需要权限提升(假设 UAC 尚未禁用)。

\n\n

如果您想使用创建的帐户执行需要管理员权限的操作(例如Admin您必须:

\n\n
    \n
  • 根据请求确认权限提升,或者

  • \n
  • 右键单击该应用程序并选择该选项,以管理员身份运行。

  • \n
\n\n
\n\n

管理员不是管理员

\n\n
\n

用户试图将文件的所有者设置为“管理员”。即使用户以管理员身份登录,也无法执行此操作。为什么\xe2\x80\x99系统不让管理员将文件的所有者更改为管理员?\xe2\x80\x99t 管理员是否有权获取文件的所有权?

\n
\n\n

...

\n\n
\n

那么你知道管理员和管理员的区别吗?

\n\n

管理员是一个帐户。

\n\n
    \n
  • 如果向管理员授予权限或特权,则只能由使用管理员帐户(即默认名称为管理员(英文)的帐户)登录的人员来完成。
  • \n
\n\n

另一方面,管理员是一个群体。

\n\n
    \n
  • 如果您是计算机管理员组的成员,则您已被授予该计算机的管理员权限。

  • \n
  • 人们在说“我\xe2\x80\x99m 是这台计算机上的管理员”之类的内容时,指的是\n 管理员组的成员身份。

  • \n
  • 使用不定冠词(“an”)而不是定冠词(“the”)突出表明该用户只是众多管理员之一。

  • \n
\n\n

当人们说“我\xe2\x80\x99m 以管理员身份运行\n”之类的内容时,事情就变得更加模糊。这可能意味着它们要么以管理员帐户运行,要么以管理员组成员的帐户运行。

\n\n

一旦您理解了这种差异,就会清楚为什么我前面提到的用户无法重新分配文件的所有权。

\n\n
    \n
  • 用户使用属于管理员组\xe2\x80\x94 的帐户登录,而不是使用管理员帐户本身。

  • \n
  • 让\xe2\x80\x99s 调用用户\xe2\x80\x99s 帐户“Bob”。SeTakeOwnershipPrivilege 权限分配给管理员组的成员,允许该组的成员向自己分配所有权。但是,此特权不允许成员将所有权分配给其他人。

  • \n
  • 在此示例中,Bob 可以将文件的所有权分配给 Bob。但他错误地尝试将所有权分配给管理员,并且由于鲍勃与管理员不同,因此操作失败。

  • \n
\n\n

用户需要使用管理员帐户登录并从那里获取文件的所有权。在这种情况下,管理员将所有权分配给自己。(或者,Bob 可以 SeRestorePrivilege在设置所有者之前启用\n。

\n\n
    \n
  • 然而,这种方法有点不正统,因为SeRestorePrivilege它是供备份恢复程序使用的。)
  • \n
\n
\n\n

来源管理员不是管理员

\n\n
\n\n

进一步阅读

\n\n\n