среда, 6 марта 2013 г.

Windows 7. Ода в честь UAC

  Захотелось мне сегодня написать хвалебный гимн в честь ругаемой всеми фичи Windows - "Контроль учетных записей" (User Access Control, UAC). Это вертикальный полозок, который большинство настройщиков считает своим долгом опустить в самое нижнее положение. То есть отключить. Появилась она впервые в Windows Vista. Предназначен UAC для ограничения самого опасного компонента компьютерной системы -  человека.

История проблемы как ее вижу я.

  Windows традиционно ругают за дырявость. Linux опять же по традиции хвалят за надежность. При этом большая часть пользователей пользуется ругаемой Windows и на Linux переходить не хотят. Среди многих причин я хочу выделить одну - удобство для человека. Удобство и безопасность компьютера - вещи абсолютно противоположные. Удобная для человека Windows легко заражается, легко портится (в основном от количества устанавливаемых - удаляемых приложений и программ неизвестного происхождения). Безопасный Linux требует поболее телодвижений для установки и настройки.
  Windows изначально делалась прежде всего удобной для человека системой. Потому и завоевала мир. И потому безопасный Linux этого не сделал. Windows была удобна для пользователей и удобна для програмистов. Последние привыкли писать приложения, требующие полных прав в операционной системе, даже если можно было обойтись и более ограниченными полномочиями.
  При этом все Windows до версии Millenium включительно даже не подозревали что человека или работающую программу можно как-то ограничить. И человек и приложение могли делать с системой все что заблагорасудится. Windows 2000 я как-то пропустил и ничего о ней не скажу. Начиная с Windows XP появились возможности ограничивать права в операционной системе. Но упрямые пользователи по прежнему предпочитали работать с правами администратора, а несгибаемые программисты по прежнему писали программы, требующие прав всесильного админа. Никакие соображения о безопасности и стабильности системы не действовали. Так было удобно и все тут. Зато можно было ругать WINDOWS за дырявость. Не помогла даже появившееся в районе 2007-го года информация о том, что ограничив юзера в правах до обычного пользователя, закрывается 90 процентов дыр и путей заражения системы. Одним махом Windows становится в 10 раз защищенней. Но нет. Ругать и возмущаться оказалось проще и удобней.

Дело сдвинулось

  И могучему Microsoft это надоело. И одним из способов увеличения безопасности и стабильности Windows явился UAC. Я так понимаю, что создатели ставили перед собой 2 цели:
  1. Если человек работает на компьютере с полными правами (находится в группе "Администраторы" или "Опытные пользователи"), то надо незаметно ограничить его права. И заодно права запускаемых им программ.
  2. Если человек работает с ограниченными правами (находится в группе "Пользователи"), то для него и для запускаемых им программ надо имитировать полный доступ к системе.
  Сразу хочу сказать, что пока не разобрался ограничивает ли UAC как то доступ к реестру. Зато доступ к системным файлам и папкам организуется очень красиво.

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

  Для каждого пользователя на компьютере имеется папка "C:\Users\Имя_Пользователя\appdata\Local\Virtual Store" И при обращении к системной папке система подставляет именно это место из "Virtual Store". Например у меня на работе вышепреведенная папка содержит подпапки "Windows" и "Program Files". И соответственно когда приложение пытается что-нибудь записать в папку Windows, вместо этого операционная система подставляет папку "Windows" из вышепреведенного "...\Virtual Store". То же самое с "Program Files". Соответственно чтение происходит по тому же принципу.
  Я ни разу не видел чтобы защищались другие места, кроме "Windows" и "Program Files". Так же подозреваю, что UAC не ограничивается только этим. Из лекций IT-проповедника Microsoft Игоря Шаститко сложилось впечатление, что то, что я описал это только часть UAC. Допустим постоянные вопросы Windows на подтверждение запуска части приложений и настроек. Когда человеку\программе требуется доступ к важной части системы и появляется этот запрос.
  И в зависимости от прав пользователя он разный. Если человек зашел администратором (что в большинстве случаев), то окошко требует только подтверждения-отказа. А если в системе обычный пользователь, то UAC потребует ввести имя и пароль администраторы системы. Или если администратор один, то только пароль.
  И подозреваю, что UAC ограничивает пользователей и приложения более разнообразно чем я сейчас знаю. И это правильно. У меня же должен быть простор для дальнейшего совершенствования.

Настройка UAC

  UAC и другие нововведения сделали Windows 7 заметно более стабильной системой чем Windows XP. К нам Windows 7 стала поступать пару лет назад. И сейчас порядка 150-200 ПК оснащены ею. И если Windows XP переустанавливается регулярно, то Windows 7 я не вспомню когда переустанавливал последний раз. И переустанавливал ли вообще.
  UAC можно полностью отключить для всей системы  опустив полозок в самый низ в "Панель управления" \ "Система и безопасность" \ "Изменение параметров контроля учетных записей". А если UAC мешает только некоторым приложениям - его можно отключить именно для этих приложений (этот вариант предпочтительней). Но об этом в следующей статье, посвященной средствам совместимости приложений в Windows 7 и 8.