Использование Puppet для изменения разрешений разделов реестра, принадлежащих TrustedInstaller

#windows #registry #puppet

#Windows #реестр #puppet

Вопрос:

Я пытаюсь настроить все подключения к Windows 10 metered на блокировку автоматических обновлений. Для этого требуется редактирование значений в разделе HKLMSOFTWAREMicrosoftWindows NTCurrentVersionNetworkListDefaultMediaCost , но агент Puppet (работающий как LocalSystem ) не может изменять эти значения, вызывая ошибки, такие как:

 Error:/Stage[main]/Main/Node[default]/Registry_value[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionNetworkListDefaultMediaCostDefault]: Could not evaluate: Unexpected exception from Win32 API. detail: (Access denied.). ERROR CODE: 5. Puppet Error ID: F46C6AE2-C711-48F9-86D6-5D50E1988E48
  

поскольку ключ принадлежит TrustedInstaller .

Возможно ли изменить эти значения автоматическим способом?

Обновить.Проблемная часть site.pp :

 node default {
  registry_value { 'HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionNetworkListDefaultMediaCost3G':
    ensure  => present,
    type    => dword,
    data    => "2",
  }
  registry_value { 'HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionNetworkListDefaultMediaCost4G':
    ensure  => present,
    type    => dword,
    data    => "2",
  }
  registry_value { 'HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionNetworkListDefaultMediaCostDefault':
    ensure  => present,
    type    => dword,
    data    => "2",
  }
  registry_value { 'HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionNetworkListDefaultMediaCostEthernet':
    ensure  => present,
    type    => dword,
    data    => "2",
  }
  registry_value { 'HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionNetworkListDefaultMediaCostWiFi':
    ensure  => present,
    type    => dword,
    data    => "2",
  }
}
  

Комментарии:

1. Можете ли вы предоставить манифест как часть вашего вопроса? Спасибо!

2. @ferventcoder Готово.

Ответ №1:

Похоже, это проблема с разрешениями, у которой LocalSystem просто нет учетных данных для изменения этих значений реестра. Возможно, вы можете выполнить одно из следующих действий:

  • добавьте LocalSystem в нужные группы (используя ресурс группы), чтобы у него были соответствующие разрешения, чтобы вы могли настраивать эти ключи (быстрый поиск не выглядит так, как будто это учетная запись группы, а специальная учетная запись)
  • используйте exec, чтобы предоставить LocalSystem доступ на запись к этим ключам до внесения изменений
  • возможно, предоставить привилегию, которая преобразуется в TrustedInstaller (быстрый поиск также не показывает эту возможность)

Похоже, вам понадобится что-то вроде cacl.exe вызовите, чтобы установить разрешение, переопределив TrustedInstaller в качестве владельца и предоставив LocalSystem право собственности, а затем привилегии. Пожалуйста, сначала изучите, чтобы понять последствия этого, прежде чем вносить изменения, и как отменить настройку после ее внесения, если вы хотите отменить ее.

Примечание: модуль ACL еще не обрабатывает реестр для получения разрешений, но это может произойти в будущем.

Комментарии:

1. Я проведу несколько тестов с использованием SubInACL ( microsoft.com/en-us/download/details.aspx?id=23510 ), как описано здесь askvg.com/… Другим способом может быть чистый PS, как показано здесь blogs.technet.microsoft.com/brad_rutkowski/2008/09/29 /…