Почему у учетных записей пользователей “нет разрешения на выполнение этой задачи”?

Вопрос или проблема

Я создаю Запланированную задачу, настроенную через PowerShell с помощью XML:

$LogonTask_xml = @"
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>$(get-date -Format yyyy-MM-ddTHH:mm:ss.00000)</Date>
    <Author>Interactive</Author>
    <Description>$LogonDescription</Description>
  </RegistrationInfo>
  <Triggers>
    <LogonTrigger>
      <Enabled>true</Enabled>
      <Delay>PT1H</Delay>
      <ExecutionTimeLimit>PT4H</ExecutionTimeLimit>
    </LogonTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <GroupId>S-1-5-32-545</GroupId>
      <RunLevel>LeastPrivilege</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>StopExisting</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>true</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT4H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>$VBScriptPath</Command>
    </Exec>
  </Actions>
</Task>
"@

Я хочу, чтобы все пользователи запускали задачу в своем собственном контексте — но не могли ее изменять — и когда они тестируют ее, продолжают сталкиваться с сообщением “Учетная запись пользователя не имеет разрешений для запуска этой задачи”.

Как вы можете видеть, задача запускается от имени группы Users, и разрешено запускать по требованию. Задача работает нормально, если я запускаю ее как администратор. Группа “users” может видеть эту конкретную задачу и имеет права на чтение и выполнение файла задачи (в c:\Windows\System32\Tasks), а пользователи могут создавать другие задачи и запускать их. Я бы поклялся, что раньше это работало.

Когда я создал другую задачу и манипулировал ACL, чтобы они полностью соответствовали “проблемной” задаче, вторая задача все еще выполняется по запросу пользователя без проблем.

Должно быть что-то еще, что может помешать непривилегированным пользователям выполнять некоторые задачи, но я не могу понять, что именно. Помощь!

На случай, если кто-то наткнется на это в будущем, вот ответ…

В какой-то момент Microsoft перестала использовать файлы задач в C:\Windows\System32\Tasks для управления безопасностью запланированных задач. Утверждается, что это произошло с Win10, но это не могло быть в ранних версиях Win10, потому что моя проблема не возникала до более поздних выпусков.

Тем не менее, возможность выполнять запланированные задачи теперь контролируется через настройки реестра в разделе HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree, но эти ключи защищены от “обычных” администраторов. Я нашел код для добавления разрешений здесь, и привел его в порядок в что-то, что я буду использовать, чтобы позволить любой задаче выполняться любым пользователем.

Надеюсь, это кому-то поможет.

Ответ или решение

Проблема с возникающим сообщением "Учетная запись пользователя не имеет разрешения на выполнение этой задачи" является распространенной в Windows среде при настройке задач с помощью Планировщика Задач. Для понимания причины этой ошибки необходимо рассмотреть несколько факторов: настройки безопасности, используемый XML для создания задачи, а также изменения в управлении правами доступа к задачам, которые были внесены в более последних версиях Windows.

Теория

Главная причина, по которой пользователи могут сталкиваться с проблемой отсутствия разрешений, часто связана с изменениями в управлении безопасностью, введенными в новых версиях Windows. Начиная с Windows 10, использование файлов в «C:\Windows\System32\Tasks» для контроля за безопасностью задач прекратилось. Вместо этого управление правами доступа к задачам теперь осуществляется через реестр, в частности, в ветке HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree. Доступ к этим ключам реестра ограничен даже для обычных администраторов.

Пример

Рассмотрим задачу, которая была создана посредством PowerShell, используя XML-конфигурацию. В данном случае, задача настроена запускаться от группы «Users» с наименьшим уровнем привилегий. В то время как администраторы могут успешно запускать задачу, обычные пользователи сталкиваются с ограничением, хотя имеют права на чтение и выполнение файлов задать и могут создавать и выполнять другие задачи.

XML-конфигурация задачи, как указано, содержит следующие элементы:

  • Принципы (Principals): в XML-файле указано, что задачей управляет группа с GroupId, равным S-1-5-32-545, что соответствует группе «Users».
  • Уровень привилегий (RunLevel): задан на уровне LeastPrivilege, что минимизирует права во время выполнения задачи.
  • Действия (Actions): исполняет скрипт, указанный в переменной $VBScriptPath.

Несмотря на настройки, предоставляющие права на запуск в контексте пользователя, задача не выполняется, что говорит о проблемах с управлением правами доступа на уровне реестра.

Применение

Чтобы решить эту проблему и обеспечить возможность выполнения задачи пользователями, необходимо внести изменения в настройки реестра, что даст доступ группе "Users" к исполнения данной задачи. Вот некоторые шаги, которые можно предпринять:

  1. Проверка настроек задач: Убедитесь, что задан правильный XML и все необходимые права предоставлены в интерфейсе Планировщика задач.

  2. Модификация реестра: Внесение изменений в ключи реестра. Это можно сделать скриптами PowerShell или с помощью сторонних инструментов:

    • Используйте скрипт из общедоступных ресурсов, таких как репозиторий GitHub, для автоматизации установки правильных разрешений.
  3. Безопасность и аудит: Проверьте права пользователей в Task Scheduler и просмотрите журнал безопасности для выявления неопознанных проблем.

  4. Тестирование: Проверьте корректность исполнения задачи после внесения всех изменений. Убедитесь, что пользователи могут запускать задачу без ошибок о недостаточности прав.

Заключение

Ошибка запуска задачи из-за «недостаточных разрешений» важна, так как она подчеркивает необходимость понимания изменений в системе безопасности Windows и требует администрирования на более глубоком уровне. Решение проблемы может потребовать модификаций в реестре и осознание системных изменений, которые рассчитаны на улучшение безопасности при выполнении задач. Учитывая информацию об использовании реестра для управления заданиями, ИТ-специалисты могут эффективно настроить задачи для пользователей, избегая распространенных ошибок с правами доступа.

Оцените материал
Добавить комментарий

Капча загружается...