【问题标题】:Chef::Exceptions::WindowsNotAdmin: can not get the security information due to missing Administrator privilegesChef::Exceptions::WindowsNotAdmin:由于缺少管理员权限,无法获取安全信息
【发布时间】:2018-10-11 15:02:09
【问题描述】:

我们试图为使用 Chef 的客户端提供管理 Windows 2012 服务器的解决方案,但不幸的是,由于 Chef::Exceptions::WindowsNotAdmin: can not get the security information for <some_file> due to missing Administrator privileges 异常,chef-client 运行失败。

这有点奇怪,因为我们已经确认我们用来远程管理服务器的域帐户是管理员组的成员。我们能够使用它来管理同一域中的其他服务器。此外,当我们通过远程桌面使用域帐户连接到服务器,以管理员身份启动 PowerShell 并启动 chef-client 运行时,它失败并出现同样的异常。

运行以下命令表明域帐户确实是管理员组的成员。这可以通过群里的SID来验证。

Get-WmiObject -Class Win32_UserAccount
Get-WmiObject -Class Win32_Group
[System.Security.Principal.WindowsIdentity]::GetCurrent().Groups

不确定服务器上的哪些设置可能导致此问题。

【问题讨论】:

    标签: windows powershell chef-infra


    【解决方案1】:

    根据thread 提供的见解,进一步挖掘 Chef 的代码会发现一个 win32 函数 GetNamedSecurityInfoW 被调用 here 以确定对象(文件、文件夹等)的安全信息。这发生在说明书安装期间,需要在端点服务器上创建一些资源文件或 gem。

    首先将创建一个空文件,然后如果可以选择的话,文件内容将自动更新。在文件内容更新过程中,需要通过 GetNamedSecurityInfoW 函数检查文件的安全访问控制列表。要调用此函数,登录用户需要具有 SE_SECURITY_NAME 权限。 Chef 本身也尝试通过在调用函数之前添加此特权并在函数调用之后恢复它来处理此问题,但这并不总是得到保证。系统设置似乎占了上风。

    我们稍微破解了 Chef 代码,试图打印出 GetNamedSecurityInfoW 上函数调用的输出,它是一个状态码 1314,表明用户没有拥有所需的权限。

    我们尝试在服务器上运行whoami /priv,发现列表中没有SeSecurityPrivilege权限。以下只是普通 Windows 服务器上的示例输出。

    Privilege Name              Description                           State   
    ========================================================================
    SeLockMemoryPrivilege       Lock pages in memory                 Disabled
    SeIncreaseQuotaPrivilege    Adjust memory quotas for a process   Disabled
    SeSecurityPrivilege         Manage auditing and security log     Disabled
    ...
    

    请注意,状态列仅指示用户是否正在使用特权。它的存在表明用户是否拥有它。

    将此权限添加回域帐户后,即在Local Securtiy Policy编辑器中将Manage auditing and security log的安全设置设置为Administrators组,然后重新启动服务器,chef-client运行成功。

    似乎 Chef 大量使用 win32 API 函数来管理 Windows 节点。而这些API函数似乎需要各种权限才能运行。有点奇怪,Chef 挽救了所有 win32 API 错误,只是将 Chef::Exceptions::WindowsNotAdmin 传播到 chef-client 运行日志,如 here 所示。最好实际解析一下错误并提供一些更有用的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-09
      • 2023-04-04
      • 1970-01-01
      • 2019-09-17
      • 2021-03-06
      • 2014-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多