Вместо вступления
Этой статьей:
- открою цикл «Умной Большой Оптимизации» компьютера;
- отвечу на вопрос: как запускать все или только определенные приложения на компьютере с повышенными привилегиями;
- избавимся от лишней суеты User Account Control (UAC).
В цикле статей «Умной Большой Оптимизации» будут статьи в которых:
- Получишь базовые знания для работы с основными приложениями и сервисами Windows, которые у большинства пользователей отсутствуют,
- Ты научишься ловить и устранять проблемы работы Windows.
- Ты сможешь настроить систему «под себя», без применения говно-твикеров, которые помимо всего прочего могут быть опасными.
- Ты получишь знания по безопасной работе с компьютером и интернет-сервисами.
- Во всех статьях я постараюсь максимально давать достоверную информацию, полученную из первоисточника, т.е. Мелконогих (Microsoft).
- И ещё что-то там, про что я забыл… 😁
Ставь лайки и комментируй, если статья оказалась полезной. Для меня и тебя это важно.
Дополняющее видео: https://dzen.ru/video/watch/6370c7c05d1bb103ee33210a
В видео могут быть фрагменты, отсутствующие в статье из-за большого набора действий, которые мне лень переносить в формат статьи.
По-сути: что такое режим одобрения администратором?
При установки ОС новый пользователь включается в группу «Администраторы». Администраторы — повелители всего и вся. Практически же, Администраторы, за исключением встроенной учётной записи «Администратор», имеют ряд ограничений на запуск приложений и все их действия попадают под пристальный взор механизма безопасности «Контроль учётных записей» (User Account Control (UAC)).
Далее про UAC я буду говорить в контексте работы данного механизма с Администратором, а не Пользователем. Для Пользователя, работающего в корпоративной среде UAC выполняет важную роль, для пользователя домашнего компьютера, который является Администратором, — доставляет хлопот. Пересказывать статью Мелких я не стану, для того её тебе и дал. Буду писать лишь про важное, с моей точки зрения.
Администраторы могут запустить приложение с повышенными привилегиями, но как правило для этого нужно совершать лишние телодвижения. Когда приложение может работать исключительно с повышенными правами, оно запускается с таковыми, если было запущенно Администратором при одобрении UAC. Если приложение может работать с ограниченными правами, фактически на уровне группы «Пользователи», оно работает с такими правами. Самый простой пример — командная строка.
WIn+R → cmd → OK (или Enter на клавиатуре)
В обычных условиях командная строка запускается без повышенных привилегий. Как следствие все запущенные приложения из командной строки — тоже, т.к. идёт наследование атрибутов безопасности.
Запуск какой-то команды в командной строке, где требуется повышенные привилегии, требует перезапуска командной строки от имени Администратора. Точно также работает Power Shell.
Механизму Контроля учётных записей в ОС приходится постоянно напрягаться и напрягать пользователя:
- проверка приложений на наличие определенных маркеров;
- может ли приложение работать с ограниченными правами или ей нужны расширенные;
- если нужны расширенные, то почему бы не напрячь вдовесок ещё пару служб — AppInfo и AxInstSV;
- перевод пользователя в Безопасный рабочий стол, с выдачей ОЧЕНЬ-ОЧЕНЬ информативного окна и заветной кнопкой «ОК»;
- проверка — а кто тот пользователь, что запускает приложение, а какой длинны его большие пальцы т.д.
Что ведет к издержкам работы с компьютером, да они могут быть минимальны при уменьшения количества уведомлений и реакции UAC на действия пользователя, но всё же куда приятнее, когда приложение запускается мгновенно, без лишних телодвижений с изначально повышенными привилегиями.
Для чего вообще вся такая суета ОС нужна? — Безопасность! Капитан Очевидность с тобой! 😉 Зачем приложению или скрипту давать заранее возможность изменять системные настройки? Зачем приложение наделять привилегиями Администратора, если для работы эти привилегии не нужны? К примеру приложение Калькулятор. Зачем ему повышенные привилегии?
Основная задача UAC — информировать пользователя о приложении, способном изменить настройки ОС, чем может потенциально навредить ОС и притормаживать процесс установки приложения, до явного одобрения пользователем.
По-сути: понижение уровня суеты UAC
В интеренетах любой мало-мальский опытный оптимизатор советует «отключать» UAC, понижая всего лишь уровень уведомлений на действия пользователя.
На самом деле UAC продолжает работать в связке со службой AppInfo и всё также пристально следит за действиями всех пользователей. Именно UAC и AppInfo не дают запускать все приложения с повышенными привилегиями, даже если их запустил член группы «Администраторы».
По-сути: предоставление дополнительных привилегий для определенных приложений
Можно воспользоваться данным подходом для ограниченного количество приложений.
Найти приложение в проводнике, зайти во вкладку «Совместимость», выставить галочку в чек-боксе «Запускать эту программу от имени администратора».
Для ярлыка программы, можно также зайти в свойства ярлыка, во вкладке «Ярлык», нажать кнопку «Дополнительно…» и в чек-боксе отметить «Запуск от имени администратора»
А что делать если нужно запускать все приложения с повышенными привилегиями по-умолчанию?
По-сути: использование встроенной учётной записи «Администратора»
Заходим в оснастку «Управление компьютером».
Win-R → compmgmt.msc → Enter
Управление компьютером → Служебные программы → Локальные пользователи и группы
Открой «Свойства Администратора» и снимаем галочку с чек-бокса «Отключить учётную запись Администратора».
Далее, при включении компьютера работаешь под встроенной учётной записью Администратора.
При таком подходе всё прочие члены группы «Администраторы» будут работать всё также с пониженными привилегиями на запуск приложений, кроме встроенной учётной записи «Администратор». Это удобно когда есть несколько учётных записей на одном компьютере, входящих в группу «Администраторы».
По-сути: отключение режима одобрения администратором
При таком подходе всё члены группы «Администраторы» получат возможность запускать любые приложения с повышенными привилегиями.
Для этого нам потребуется оснастка «Редактор локальной групповой политики».
Win-R → gpedit.msc → Enter
Конфигурация компьютера → Конфигурация Windows → Параметры безопасности → Локальные политики → Параметры безопасности
Находишь политики из группы «Контроль учётных записей»:
- поведение запроса на повышение прав для администраторов в режиме одобрения администратором — устанавливаешь первое значение «Повышение прав без запроса»;
Для вступления изменений в действие требуется перезагрузить компьютер.
«Служба безопасности WIndows» будет ныть при включении компьютера, о снижении уровня безопасности. Ничего страшного! Нытик ноет — караван танцует…
По-сути: почему стоит воспользоваться 2м или 3м способом?
Всё просто, вот мои аргументы:
- Все приложения не входящие в WIndows, а их 99.9% несут в себе потенциальную угрозу и способны изменить системные настройки.
- Если пользователь домашнего компьютера намерен запустить приложение, он его запустить вне зависимости от UACи его оповещений!
- Концепция безопасности компьютера строится лишь в половину от средств защиты ОС, второй половиной этой концепции, самой важной на мой взгляд, является опыт пользователя! Краеугольным камнем этого опыта, является навык: не доверять приложениям или скриптам из сомнительных источников.
- От вирусов UAC не спасёт. Для этого требуются другие средства.
- «Сломать» ОС изменив системные настройки можно, но такое и проще восстановить, чем скажем последствия работы вируса. Кроме того, у Windows есть отдельные средства защиты системных файлов и средства их восстановления.
- Если скрипт или приложения хотят обойти средства защиты UAC, связанные с повышением привилегий на работу с компьютером, они могут это сделать «втихую».
Вот к примеру кусок кода Power Shell, который перезапустить скрипт с повышенными привилегиями:
[String]$gScriptDir = $PSScriptRoot + "\"
[String]$gScriptPath = $PSCommandPath
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
$argsList = "-File " + """" + $gScriptPath + """"
Write-Host "Run As Administrator…"
Start-Process powershell -Verb runAs -ArgumentList $argsList
Exit
}
В данном конкретном случае произойдет следующее:
- Администратор запускает скрипт.
- Скрипт видит что ему не дали повышенных привилегий, скрипт перезапускает сам себя без спроса с такими привилегиями, если режим оповещения UAC стоит на минимальном уровне.
- Скрипт спокойно работает с повышенными привилегиями.
Заключение
Почему важно ставить лайки и оставлять комментарии? Так я вижу, что мои труды продуктивны. Так я понимаю, что данная тема тебе нравиться и я буду её развивать. Я приветствую конструктивную критику, приветствую новые идеи, — потому пиши.
Я пишу статьи\снимаю видео, — ты оцениваешь их!
А на этом всё! Мне спасибо, я пошёл… 😊