Руководство по контролю учетных записей пользователей (UAC)

Контроль учетных записей (User Account Control), вероятно, является самой недооцененной и, возможно, даже самой ненавистной многими функцией, которая дебютировала в Висте и стала частью всех последующих версий Windows. По большей части поток ненависти, который пользователи выплескивают на User Account Control, я считаю незаслуженным, поскольку функция несет реальную пользу. Я полностью согласен, что иногда контроль учетных записей (далее по тексту просто UAC) может быть весьма раздражающим, но он был внедрен в Windows с определенной целью. Нет, не для того чтобы мешать пользователям, а чтобы способствовать плавному переходу от стандартного (ограниченного) аккаунта к учетной записи администратора.

В этой статье я расскажу, что такое UAC, как он работает, почему он необходим и как его настроить. Я не имею никакого намерения давать вам наставления, почему вы должны использовать UAC, а лишь проинформирую о том, чего вы лишаетесь, отключая эту функцию.

Немного предыстории и информация об учетных записях

Как вы должны знать, Windows работает с так называемыми учетными записями. Они бывают двух видов: администраторские и стандартные (ограниченные).

Учетная запись администратора дает пользователю полный доступ ко всем функциям операционной системы, т.е. пользователь может делать все, что он хочет. Пользователь стандартной учетной записи располагает пониженными правами, а потому ему позволены лишь некоторые вещи. Это, как правило, все то, что влияет только на текущего пользователя. Например: смена обоев на рабочем столе, настройки мыши, изменение звуковой схемы и т.д. В общем, все, что касается конкретного пользователя и не применяется ко всей системе, доступно в стандартной учетной записи. Для всего, что может повлиять на систему в целом, необходим администраторский доступ.

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

В Windows 2000 и Windows XP выполнение действий от имени администратора реализовано не достаточно гибко, а потому работать под ограниченной учетной записью было не очень удобно. Один из способов выполнить администраторское действие в этих версиях системы выглядит так: выход из ограниченной учетной записи (или быстрое переключение, если использовалась Windows XP) -> вход в аккаунт администратора -> выполнение действия -> выход из учетки администратора (или быстрое переключение, если использовалась Windows XP) -> возврат в ограниченную учетную запись.

Другой вариант заключается в использовании контекстного меню и опции «Запустить от имени другого пользователя», которая открывает окно, в котором необходимо указать соответствующий администраторский аккаунт и пароль, чтобы запустить файл от имени администратора. Это достаточно быстрый способ переключения с одной учетки на другую, но он не применим к любой ситуации, требующей административных привилегий. Еще одна проблема этого метода заключается в том, что учетная запись администратора должна иметь пароль, иначе выполнение завершится неудачей.

Вот почему в Windows Vista была внедрена функция User Account Control, а в Windows 7 была доведена почти до совершенства.

Что такое UAC

UAC – это функция в Windows Vista, 7, 8, 8.1 и 10, которая имеет цель сделать переход из ограниченной среды в администраторскую максимально гладким и беспроблемным, устраняя необходимость запускать файлы с правами администратора вручную или переключаться между учетными записями. Кроме того, UAC – это дополнительный слой защиты, который не требует почти никаких усилий со стороны пользователя, но способен предотвратить серьезный ущерб.

Как работает UAC

При входе пользователя в свою учетную запись Windows создает так называемый user access token, который содержит определенные сведения о данной учетной записи и главным образом различные идентификаторы безопасности, которые операционная система использует для управления возможностями доступа этого аккаунта. Другими словами, этот token является своего рода личным документом (как паспорт, например). Это относится ко всем версиям Windows на основе ядра NT: NT, 2000, XP, Vista, 7, 8 и 10.

Когда пользователь входит в стандартную учетную запись (ограниченную), создается standard user token с ограниченными правами. Когда пользователь входит в администраторский аккаунт, создается т.н. administrator token с полным доступом. Логично.

Однако в Windows Vista, 7, 8 и 10, если UAC включен и пользователь входит в учетную запись администратора, Windows создает два token’а. Администраторский остается на заднем плане, а стандартный используется для запуска Explorer.exe. То есть Explorer.exe запускается с ограниченными правами. При этом все запущенные после этого процессы становятся субпроцессами Explorer.exe с унаследованными ограниченными привилегиями основного процесса. Если процессу требуются права администратора, он запрашивает администраторский token, а Windows в свою очередь спрашивает разрешения пользователя предоставить процессу этот token в виде специального диалогового окна.

Это диалоговое окно содержит так называемый безопасный рабочий стол (secure desktop), доступ к которому имеет только операционная система. Он выглядит как затемненный снимок реального рабочего стола и содержит только окно подтверждения администраторских прав и, возможно, языковую панель (если активировано более одного языка).

Если пользователь не согласится и нажмет «Нет», Windows откажет процессу в администраторском token’е. А если согласится и выберет «Да», операционная система предоставит процессу необходимые ему привилегии, а именно, администраторский token.

Если процесс уже запущен с пониженными правами, он будет перезапущен с таковыми повышенными (администраторскими). Процесс не может быть «понижен» или «повышен» напрямую. После того как процесс был запущен с одним token’ном, он не сможет получить других прав до тех пор, пока снова не будет запущен с новыми правами. В качестве примера можно привести Диспетчер задач, который всегда запускается с ограниченными правами. Если вы нажмете кнопку «Отображать процессы всех пользователей», Task Manager будет закрыт и снова запущен, но уже с правами администратора.

При использовании стандартной учетной записи UAC просит указать конкретный администраторский аккаунт и ввести пароль:

Руководство по контролю учетных записей пользователей (UAC)

Как UAC защищает пользователя

Сам по себе UAC не обеспечивает особую защиту. Он всего лишь облегчает переход из ограниченной среды в таковую администраторскую. Так что более правильная постановка вопроса, следовательно, такова: как ограниченная учетная запись препятствует пользователю. Под ограниченным профилем пользователя процессы не могут получить доступ к определенным системным зонам:

  • основной раздел диска;
  • пользовательские папки других пользователей в папке Users;
  • папка Program Files;
  • папка Windows и все ее подпапки;
  • разделы других учетных записей в системном реестре
  • раздел HKEY_LOCAL_MACHINE в системном реестре.

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

Может ли UAC помешать работе старых программ, которые официально не совместимы с Vista/7/8/10

Не должен. Когда UAC включен, также включена и виртуализация. Некоторые старые и/или просто небрежно написанные программы не используют правильные папки для хранения своих файлов (настройки, журналы и т.д.). Правильные папки – это папки в каталоге AppData, которые есть у каждой учетной записи и где каждая программа может создать папку для хранения там всего, что пожелает.

Некоторые программы пытаются сохранить свои файлы в Program Files и/или Windows. Если программа запускается с правами администратора, это не будет проблемой. Однако если программа выполняется с ограниченными разрешениями – она не сможет внести изменения в файлы/папки в Program Files и/или Windows. Операционная система просто не позволит ей этого.

Дабы предотвратить проблемы с такими программами, Windows предлагает виртуализацию папок и ключей реестра, к которым программы с ограниченными правами не имеют доступа в принципе. Когда подобная программа пытается создать файл в защищенной папке, то операционная система перенаправляет ее в специальную папку VirtualStore, которая находится в X:UsersAppDataLocal (где X: это системный раздел, обычно – C:). Т.е. глазами самой программы все в порядке. Она не сталкивается с препятствиями и считает, что создает файлы/папки точно там, где хочет. VirtualStore обычно содержит вложенные папки Program Files и Windows. Вот скриншот Program Files в моей папке VirtualStore:

Руководство по контролю учетных записей пользователей (UAC)

А вот, что находится в папке SopCast, например:

Руководство по контролю учетных записей пользователей (UAC)

Т.е. если бы UAC был остановлен, или программа всегда запускалась с правами администратора, эти файлы/папки были бы созданы в C:Program FilesSopCast. В Windows XP эти файлы и папки были бы созданы без проблем, потому что в ней все программы имеют права администратора по умолчанию.

Это, конечно, не должно рассматриваться разработчиками в качестве постоянного решения. Обязанность каждого автора заключается в создании полностью совместимого с актуальными операционными системами софта.

Диалоговые окна UAC

Вы могли заметить, что существует всего три различных диалоговых окна UAC. Тут мы рассмотрим таковые в Windows 7, 8.x и 10. В Vista диалоги несколько отличаются, но мы не будем на них останавливаться.

Первый тип окна имеет темно-синюю полоску в верхней части и иконку в виде щита в левом верхнем углу, которая разделена на 2 синие и 2 желтые секции. Это окно появляется, когда требуется подтверждение для процесса с цифровой подписью, которая принадлежит операционной системе – т.н. Windows binaries. О них поговорим ниже.

Руководство по контролю учетных записей пользователей (UAC)

Второй тип окна тоже с темно-синей лентой, но икона щита полностью синяя и с вопросительным знаком. Это окно появляется, когда требуется подтверждение для процесса с цифровой подписью, но процесс/файл не принадлежит операционной системе.

Руководство по контролю учетных записей пользователей (UAC)

Третье окно оформлено оранжевой полосой, щит также оранжевый, но с восклицательным знаком. Этот диалог появляется, когда требуется подтверждение для процесса без цифровой подписи.

Руководство по контролю учетных записей пользователей (UAC)

Настройки UAC

Настройки (режимы работы) контроля учетных записей находятся в Панель управления -> Система и безопасность -> Изменение параметров контроля учетных записей. Их всего 4:

Руководство по контролю учетных записей пользователей (UAC)

Всегда уведомлять – самый высокий уровень. Этот режим эквивалентен способу работы UAC в Windows Vista. В этом режиме система всегда требует подтверждения прав администратора, независимо от процесса и что он требует.

Второй уровень используется по умолчанию в Windows 7, 8.x и 10. В этот режиме Windows не выводит окно UAC, когда дело доходит до так называемых Windows binaries. Т.е. если файл/процесс, который требует прав администратора, отвечает следующим 3 условиям, операционная система наделит его ими автоматически, без подтверждения со стороны пользователя:

  • файл обладает встроенным или в виде отдельного файла манифестом (manifest), который указывает на автоматическое повышение прав;
  • файл находится в папке Windows (или в любой из ее подпапок);
  • файл подписан действительной цифровой подписью Windows.

Третий режим такой же, как второй (предыдущий), но с той разницей, что при нем не используется безопасный рабочий стол. То есть экран не затемняется, а диалоговое окно UAC появляется как и любое другое. Майкрософт не рекомендует использовать этот вариант, а почему – я объясню позже.

Не уведомлять меня – четвертый и последний уровень. Фактически это означает полное отключение UAC.

Здесь уместно сделать два замечания:

  • цифровая подпись Windows относится конкретно к операционной системе. Я говорю это, потому что существуют и файлы, которые были подписаны цифровой подписью Microsoft. Это две отдельные подписи, при этом UAC признает только цифровую подпись Windows, поскольку она выступает в качестве доказательства, что файл не только от Microsoft, но и является частью операционной системы.
  • не все файлы Windows располагают манифестом для автоматического повышения прав. Есть файлы, которые намеренно лишены этого. Например, regedit.exe и cmd.exe. Понятно, что второй лишен автоматического повышения, потому что очень часто используется для запуска других процессов, а как уже упоминалось – каждый новый процесс наследует права процесса, который его запустил. Это означает, что каждый мог бы использовать командную строку для беспроблемного запуска любых процессов с правами администратора. К счастью, в Microsoft не дураки сидят.

Почему важно использовать безопасный рабочий стол

Безопасный рабочий стол предотвращает любые возможные помехи и влияния других процессов. Как уже упоминалось выше, доступ к нему есть только у операционной системы и с ним она принимает только базовые команды со стороны пользователя, то есть нажатие кнопки «Да» или «Нет».

Если вы не используете безопасный рабочий стол, злоумышленник может сымитировать окно UAC, чтобы ввести вас в заблуждение и запустить свой вредоносный файл с правами администратора.

Когда нужны права администратора? Когда появляется окно UAC?

Вообще есть три случая, при которых UAC обращается к пользователю:

  • при изменении системных (не пользовательских) настроек, хотя на самом деле это относится только к максимальному уровню UAC;
  • при установке или удалении программы/драйвера;
  • когда приложение/процесс требует привилегии администратора, чтобы внести изменения в системные файлы/папки или разделы системного реестра.

Почему важно не отключать UAC

Контроль учетных записей пользователей обеспечивает высокий уровень защиты, а взамен не требует практически ничего. То есть коэффициент полезного действия UAC очень высок. Я не понимаю, почему он так раздражает людей. В повседневной работе среднестатистический пользователь видит окно UAC 1-2 раза в день. Может быть, даже 0. Это так много?

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

Среднестатистический пользователь не устанавливает драйверы и программы каждый день. Все драйверы и большинство необходимых программ устанавливаются один раз – после установки Windows. То есть это основной процент запросов UAC. После этого UAC вмешивается только при обновлении, однако новые версии программ выходят далеко не каждый день, не говоря уже о драйверах. Более того, многие вообще не обновляют ни программы, ни драйверы, что дополнительно снижает вопросы UAC.

Очень немногим программам нужны права администратора для выполнения своей работы. Это в основном дефрагментаторы, инструменты для очистки и оптимизации, некоторые программы для диагностики (AIDA64, HWMonitor, SpeedFan и др.) и настройки системы (Process Explorer и Autoruns, например, но только если нужно выполнить что-то специфичное – скажем, отключить драйвер/службу или стартующую с Windows программу). И все это программы, которые либо можно не использовать вообще, либо в редких случаях. Все часто используемые приложения работают с UAC абсолютно нормально и не задают никаких вопросов:

  • мультимедийные плееры (аудио и/или видео);
  • конвертеры видео/аудио;
  • программы для обработки изображений/видео/аудио;
  • программы для захвата скриншотов рабочего стола или видеозаписи на нем;
  • программы для просмотра изображений;
  • веб-браузеры;
  • загрузчики файлов (download-менеджеры и клиенты P2P-сетей);
  • FTP-клиенты;
  • мессенджеры или программы для голосовой/видео связи;
  • программы для записи дисков;
  • архиваторы;
  • текстовые редакторы;
  • PDF-ридеры;
  • виртуальные машины;
  • и др.

Даже установка обновлений Windows не задействует окно UAC.

Есть люди, которые готовы пожертвовать 1-2 и более минут в день, чтобы «оптимизировать» систему некоторыми криво написанными программами, которые не делают ничего полезного, но не готовы потратить несколько секунд в день, чтобы ответить на запросы UAC.

Различных заявлений вроде «Я опытный пользователь и знаю, как защититься» не достаточно, потому что никто не застрахован и исход определенных ситуаций не всегда зависит от пользователя. Более того, людям свойственно ошибаться, это случается с каждым.

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

И это лишь один из множества примеров.

Запуск приложений вместе с Windows с правами администратора

Я допускаю, что возможно есть пользователи, которые выключают UAC просто для того, чтобы иметь возможность запускать программы вместе с Windows и с правами администратора. Обычным способом это невозможно, потому что UAC не может отправить запрос пользователю до тех пор, пока не будет загружен рабочий стол. Тем не менее, есть способ, благодаря которому вы можете оставить UAC включенным. Вот он:

  • откройте Планировщик заданий;
  • нажмите Создать задачу;
  • в поле Имя введите что-нибудь по своему усмотрению, а в нижней части окна включите параметр Выполнять с наивысшими правами;
  • перейдите на вкладку Триггеры и нажмите Создать;
  • в выпадающем меню сверху выберите При входе в систему; если вы хотите создать задачу для конкретного пользователя, выберите вариант Пользователь, а затем нажмите Сменить пользователя; введите имя пользователя и подтвердите нажатием кнопки OK;
  • перейдите на вкладку Действия и нажмите Создать;
  • нажмите Обзор, укажите соответствующее приложение и подтвердите свой выбор;
  • перейдите на вкладку Условия и отключите параметр Запускать только при питании от электросети;
  • на вкладке Параметры отключите параметр Останавливать задачу, выполняемую дольше;
  • подтвердите, нажав OK.

Готово. Задача добавлена, так что теперь приложение будет загружаться автоматически с правами администратора. Здесь, однако, есть одна небольшая загвоздка: все подобные задачи выполняются с приоритетом ниже, чем нормальный – below normal (ниже нормы). Если вас это устраивает, то все в порядке. Если нет, тогда вам придется потрудиться немного больше:

  • запустите Планировщик заданий, если вы уже закрыли его;
  • выберите Библиотека планировщика заданий;
  • отметьте вашу задачу, нажмите Экспорт и сохраните ее в формате .xml;
  • откройте .xml файл в текстовом редакторе;
  • найдите раздел 7, который должен быть в конце файла и измените семерку (7) между открывающим и закрывающим тегами на пятерку (5);
  • сохраните файл;
  • в Планировщике заданий снова выделите свою задачу, нажмите Удалить и подтвердите удаление;
  • теперь нажмите Импортировать задачу, укажите только что сохраненный файл и нажмите кнопку OK.

На этом все. Использовать UAC или нет, решать только вам, но очень важно знать, что вы теряете, когда отключаете эту функцию, как и быть осведомленным о рисках. Спасибо за внимание!