User Account Control на страже системы


11 0

Наиболее сильно недооцененной и не понятой функцией в Windows Vista является User Account Control (UAC). А зря, это очень важная и полезная функция. Долгие годы пользователи были богами в своих системах и работали от имени учетной записи администратора. Так было в Windows 95, 98, ME и даже в 2000 и XP, когда все предупреждают, что это опасно для системы. В конкурирующих системах, например в ОС Linux, запрещено входить в графическую оболочку от имени администратора (root). Если необходимо выполнить действия от имени администратора, пользователь должен переключиться в консоли на учетную запись администратора, но запускать целую оболочку от администратора не нужно.

Компания Microsoft не стала вводить такой категорический запрет ради удобства пользователей и ради большого количества программ, которые могут потребовать выполнения привилегированных операций, но безопасность важнее, поэтому в Windows Vista для нашей защиты была внедрена User Account Control. Не советую ее отключать, ибо это реальная защита, и если какая-то программа не работает корректно с UAC, то это не Windows плохой, это программа не умеет работать в безопасном окружении и я бы не стал работать с такой программой ради собственной безопасности. Такое отношение есть в любой безопасной системе и теперь так есть и скорей всего будет в Windows.

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

Административные права могут потребоваться, когда вы устанавливаете программу, и она производит копирование файлов в директории Program Files, Windows или производит запись в реестр HKLM (HKEY_LOCAL_MACHINE).

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

Виртуализация

Помимо контроля доступа к запрещенным ресурсам, UAC может виртуализировать работу с критически важными данными. Если программа обращается к важным данным, то UAC создает видимость реального доступа (виртуализирует доступ). Программа даже не будет подозревать, что реального доступа нет.

Давайте рассмотрим это на примере. Запустите командную строку и перейдите в папку Windows. Эта системная папка и ее защищает UAC. Я надеюсь, он у вас включен? Иначе вы не только в большей безопасности, но и не увидите результат примера. В директории Windows выполните какую-нибудь команду по созданию файла. Например, можно попытаться сохранить в текстовый файл список файлов текущей директории командой:

dir > myfile.txt

Это делать запрещено из под стандартного пользователя, поэтому в результате вы увидите сообщение об отказе в доступе:

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

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

Теперь повторите команду создания файла. Ни единой ошибки. На этот раз программа выполнила все успешно и сохранила результат в файл. А сохранила ли? Проверьте директорию Windows, там вашего файла не будет!!! На самом деле, его нет нигде. Если включена виртуализация, то система создала видимость доступа, но не дала его реально, поэтому файла не будет. Программа думала, что она работает с системой, но UAC не дал сделать этого.

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

Если ты считаешь, что UAC глуп и не нужен, то это твое право. Но я выходя из дама, обязательно закрываю за собой дверь и мне не сложно достать ключ и открыть дверь, когда я возвращаюсь, зато я более менее спокоен за свои вещи. Дверь не гарантирует, что вещи обязательно будут целы и дверь не взломают, но она помогает защитить собственность. Точно так же и UAC. Мне не сложно подтвердить свои действия, связанные с доступом к важным системе ресурсам, зато эта дверь под названием UAC, помогает мне защитить свою собственность. Если ты не понимаешь этого и любишь спать с открытыми дверьми, это твое право.


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

Alexo

28 Сентября 2008

Еще интереснее было бы почитаь как дружить с этим UAC :)


Михаил Фленов

28 Сентября 2008

Очень легко, нужно просто дружить. Если какая-то программа не дружит с UAC и необосновано требует себе права админа, то эта программа фуфло. После этого жизнь становится прекрасна и я не ссорюсь с UAC.


Alexo

28 Сентября 2008

Дружить программисту :) Например если нужно зарегистрировать под себя определенный тип файлов тоже нужны привелегии администратора. А если через 24 ресурс себе требудшь привелегии администратора, то такая программа не может быть в автозагрузке, и т.д.


Михаил Фленов

28 Сентября 2008

В папку Program Files и в реестр HCLM пиши только во время установки программы. В автозагрузку реестра ты можешь попасть из под стандартного пользователя, только текущего пользователя, а не машины в целом.

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

Но только из-за того, что раз в год пользователю может понадобиться зарегестрировать расширение, все время работать от имени админа - нельзя. Это не безопасно.


Alexo

28 Сентября 2008

Но только из-за того, что раз в год пользователю может понадобиться зарегестрировать расширение, все время работать от имени админа - нельзя. Это не безопасно.


Полностью согласен.

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


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


Spider_NET

28 Сентября 2008

Идея положенная в основу UAC - хорошая, но ИМХО реализовано все некрасиво. Когда вышла Vista, то под нее не было адаптированных программ (написанных, с учетом требований этой системы), поэтому юак орал как резанный и все его дружно сносили (в том числе и я, когда тестил ОС).

Сейчас ситуация в целом не изменилась. Очень много пользователей просто не задумываются и если видят возражения UAC, то уже механически нажимают выбирают запуск программы от имени администратора. В итоге смысл защиты теряется. В nix, все таки лучше все реализовано. Хочешь запустить под рутом, выполни su. Так хотя бы нет прямого соблазна машинально тыкнуть на "Запуск от админа". В Windows есть аналогичная функция Run As. ИМХО, лучше уж юзать ее.


Михаил Фленов

29 Сентября 2008

Идея положенная в основу UAC - хорошая, но ИМХО реализовано все некрасиво


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

2Alexo

Я знаю точно, где эту функцию можно найти - книга называется "Безопасный код" от MS. Там было описано, как запрашивать необходимые привелегии. У меня сейчас этой книги нет под рукой, я ее брал почитать на недельку. Как будет, я кину здесь имя функции.


пиарщик

29 Сентября 2008

Немного переделанный аналог "sudo" из Ubuntu.


Михаил Фленов

29 Сентября 2008

Не "немного", а "НАМНОГО" и не из Ubuntu, а вообще из nix систем. У sudo и UAC схожее назначение, только sudo переключает консоль на админа, а UAC более интеллектуален. Вот функция Run As, вот это чистый аналог sudo.


Михаил Фленов

29 Сентября 2008

Попробуй. Если диск чистый и не нужный, то попробуй удалить разделы и создать во время установки. Установщик Windows должен автоматом сделать первый диск активным. Я уничтожу эти сообщения, потому что здесь не форум и это действительно громадный офтоп.


Тут есть еще комментарий, но он слишком подозрительный и ждет подтверждения

Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне