Баг shutdown.exe в Windows XP

Началось все с того, что необходимо было решить простую задачку: предоставить рядовому доменному пользователю право на удаленную перезагрузку одного из member-серверов в домене. Перезагрузка должна осуществляться при помощи штатной утилиты shutdown. Все рабочие станции в домене, а, значит, и та, с которой пользователь будет давать команду shutdown, работают под ОС Windows XP, сервера – под Windows 2003.
Собственно, задачка простая: понятно, что пользователю необходимо предоставить некие привилегии на целевом сервере, чтобы он получил право на его перезагрузку. И так, лезем в локальные политики безопасности сервера и (в разделе “\Security Settings\Local Policies\User Rights Assignment” или, если по-русски, “Параметры безопасности\Локальные политики\Назначение прав пользователя”) находим следующие параметры: “Shutdown the system” (“Завершение работы системы”) и “Force shutdown from a remote system” (“Принудительное удаленное завершение работы”). При ближайшем рассмотрении понимаем, что первый параметр отвечает за предоставление привилегии локальной перезагрузки системы (а, значит, он нам не годится), а второй – удаленной системы (то, что надо). Ага, включаем пользователя в перечень, пользователей, которым предоставлено право “Force shutdown from a remote system” и идем на заслуженный отдых. Но, оказывается, что проделанных действий почему-то недостаточно, и при запуске команды shutdown –r –f –t 01 –m \\server_name пользователь получает сообщение «Клиент не обладает требуемыми правами». После продолжительного гугления с удивлением наткнулся на решение, в котором утверждалось, что пользователю также необходимо предоставить привилегию “Force shutdown from a remote system” и на клиентской локальной системе (на той системе, где пользователь будет запускать команду shutdown, чтобы дать команду удаленной системе начать завершение работы). От безысходности решил проверить. И, что вы думаете? Оказалось этот способ действительно работает! Некоторое время спустя, коллега Dr.Night поделился еще одной ссылкой на блог MS, с описанием этого бага. В этом блоге говорится, о том, что, если вы пытаетесь перезагрузить локальную систему, то команда shutdown ошибочно требует наличия у пользователя привилегии SeRemoteShutdownPrivilege (параметр безопасности “Force shutdown from a remote system”) в локальной системе. Но, как видно из примера, с которого я начал эту заметку, команда shutdown ошибочно требует наличия привилегии SeRemoteShutdownPrivilege (параметр безопасности “Force shutdown from a remote system”) в локальной системе даже тогда, когда мы ничего не хотим делать с локальной системой. В том же блоге предлагается элегантное и универсальное решение для обхода этого бага: предоставить группе пользователей “INTERACTIVE” (“ИНТЕРАКТИВНЫЕ”) привилегии SeRemoteShutdownPrivilege (параметр безопасности “Force shutdown from a remote system”), что легко проделать при помощи групповых политик.

9 Comments

  1. Зашёл на целевом сервере в локальные политики безопасности сервера и вижу, что не активно Добавить пользователя или группу

    • Для DC (по умолчанию) значение интересующего вас параметра безопасности (“Принудительное удаленное завершение работы”) уже задано в Default Domain Controller Policy (DDCP), которая приоритетнее чем локальная политика (правило LSDOU). IIRC, если параметр безопасности определен в вышестоящей политике (Site, Domain, OU), то редактор групповой политики не позволяет изменять этот параметр в локальном GPO.

      Кроме того, изменение локального GPO на DC – это моветон, т.к. надо стараться, чтобы все DC в домене имели одинаковые параметры безопасности, поэтому для DC изменения в политиках лучше всего вносить в DDCP.

    • Я знаю “400 сравнительно честных способов отъема денег у населения” способов удаленной перезагрузки компьютеров, но речь в данной заметке идет именно о shutdown.exe ;)
      Правильнее будет сказать – о баге shutdown.exe.

      PS Видимо вы описАлись: командлет, предназначенный для рестарта компьютеров, называется Restart-Computer.

Leave a Reply

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.