3 ноября 2008 г.

Несколько слов о UAC в Vista

Это копия моего поста с форума.

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

Проблема со всеми версиями Windows, кроме Vista, в том, что пользователи в них работают из под административных учётных записей. Что это значит? Во-первых, это означает, что большая часть правил безопасности просто не работает, ибо администраторам разрешено всё. Почему пользователи работают под админами? Потому что они так привыкли. Потому что раньше не было ограничений админ/не админ. Потому что они не в курсе, что можно работать ещё как-то, зачем это нужно и т.п.

Чем это плохо? Посмотрите, сколько пакости развелось под Windows и как мала их доля в мире всяких Linux. Да, определённо, основной фактор здесь - степень распространения ОС. Но кроме этого, обратите внимание, что всю жизнь мы только и слышим: под учётной записью root работать нельзя! Поэтому чаще всего пользователи работают именно под пользователями, запуская root только в случае крайней необходимости. Видите ли, при таком раскладе плохая бяка, попав на вашу машину мало что может сделать. Ни одну программу не изменишь, в автозапуск себя не добавишь (нет прав!) - остаётся только возможность похрюнячить документы пользователя - и всё. Другие пользователи не задеты, система вообще ничего не заметит.

Более того, на этом дела не заканчиваются. Поскольку в Windows все работают под админами, то программисты пишут программы, которые вообще не работают в Windows по-умолчанию! (имеется ввиду - под пользователем, а не под админом). Обучение, чтоб его. Чтобы писать софт недостаточно прочитать книжку по Delphi и начать экспериментировать.

Здесь хороша аналогия с ремнями безопасности в автомобиле. Вообще говоря, они не защищают вас от аварии. Точно так же, как и вся эта безопасность вообще (и UAC в частности) бессильны против желания пользователя посмотреть танцующих кроликов. Но! Если что-то случиться, то как ремни безопасности, так и компьютерная безопасность, защищают вас от последствий. Что-то типа подстелить соломку на случай, если упадёшь.

Так вот, именно так обстояли дела до Vista: мы имеем одних админов (спрашивается: нафига вообще тогда нужна была вся линейка NT? :) XP в большинстве случаев используется ровно как любая Win9X), кучу софта, который считает, что ему можно всё, и пользователей, которые как всегда хотят, чтобы им сделали хорошо, но не знают как - я уверен, что все в курсе, как пользователи любят покричать о безопасности вообще и за кучу попинать MS за отсутствие таковой (что, мягко говоря, совсем не так).

Итак, дальнейшее направление развития линейки Windows - это перевести всех пользователей с админов на обычные учётки. Но нельзя просто так ввести такое ограничение. Почему? Во-первых, поскольку фактически нет правильно написанных программ, то получится, что под Vista-у не будет софта. Кто будет ставить ОС, если для неё нет программ? Это вопрос совместимости.

С другой стороны, пользователь просто отключит все нововведения в порыве сделать как раньше, как ему привычнее. Замечательно, получим ещё одну ОС, которая используется примерно так же, как когда-то использовалась Win98. Это вопрос удобства.

Вот почему нельзя просто насильно отключить админа.

Вот тут-то на сцену и выходит UAC (ну и виртуализация и может ещё кто, про кого я забыл). Что такое UAC? Вопреки распространённому мнению - это не средство свести пользователя с ума постоянными вопросами "а вы точно уверены"? Функция UAC - обеспечить пользователям возможность работать с правами обычного пользователя, не прибегая к административным. Да, говорит Microsoft пользователям, если вы уж так хотите - работайте под администраторами. Но! Административные полномочия вы будете использовать только при установке программ, изменении глобальных настроек и т.п. административных задач. Для рисования, игр, общения, просмотра фильмов, интернета, музыки и т.п. повседневных задач администраторские права вам нафиг не нужны. Фактически, административная учётка в Vista - это две учётные записи (админ + пользователь), объединённые общими настройками. Вы работаете как обычно, как только вам нужно, скажем, установить программу - вы просто отвечаете на диалог об элевации (повышения) прав - и ВСЁ!

Вот это офигенно удобно! Блин, да в обычных ОС вам нужно было бы выйти и залогиниться заново уже под админом, установить программу, потом вернуться к обычному пользователю (ок, шаг с выходом перед логином - опциональный и не для всех ОС). Насколько удобнее делает UAC это переключение! UAC - это просто средство облегчения вашей жизни. Скажите спасибо, что MS действительно заботится о своих пользователях (эй, если бы это было не так, мы бы не стали покупать Windows) - ведь она могла не тратить силы, думая: блин, как бы поудобнее сделать переход на новую ОС? И ведь могла же она просто тупо заставить вас работать под обычным пользователем. Но не сделала. MS ввела UAC.

Поэтому: никогда, никогда, никогда не выключайте UAC! Этим вы просто возвращаетесь в пещерный век.

Да, со многими программами могут быть проблемы, может часто вылезать диалог UAC и т.п. Но это просто процесс акклиматизации. В дальнейшем эти проблемы сойдут на нет. Microsoft с 95-го года говорит нам, как нужно делать. Но упрямые и безграмотные программисты всё равно делают не так, как надо.

Посмотрите: возможности более правильного использования компьютера были заложены хрен знает когда с появлением WinNT. И что? Хоть кто-то хоть пальцем для этого пошевелил? Нет, мы лучше знаем как надо, мы будем писать в папку с программой, мы будем искать значения в реестре, мы будем делать как мы хотим, а не как надо. Дай людям в руки возможность - и они обязательно воспользуются ей неправильно. Поэтому, если раньше господствовала идеология: "мы даём программистам в руки самые мощные инструменты, а они обязаны распоряжаться ими мудро" (хороший пример про C++, кстати). Время показало, что это совсем не так. Напротив, ситуация больше похожа на обезьяну с гранатой. Именно поэтому курс меняется на: "если вы не хотите делать как надо - вас заставят это делать". И это правильно.

«Человек вообще слышит и воспринимает только то, что совпадает с его собственными взглядами»

Поэтому, когда в MS долго-долго работают над очередной версией ОС, проверяют разные идеи, отлаживают её, потом выпускают её и говорят: вот, это лучшее, что нам удалось сделать, чтобы всем было хорошо (смотрите, мы улучшили вот это и вот то, согласно вашим пожеланиям), то все немедленно начинают орать: "что это? Мы не хотим этого! Мы вообще первый раз об этом слышим! Мы хотим, чтобы она нам кофе готовила! И голых тёток не забудьте!". Люди просто глухи к словам, зачем это нужно, потому что они не хотят думать.

Очень простой приём, чтобы вернуться в реальный мир: представьте себе что было бы, если б ваши желания исполнились бы. Только отвечайте реалистично, а не через розовые очки.

6 комментариев :

  1. Отличная статья, согласен на все 100%. Знал, что многие беды от программистов, что многие - от пользователей, но вот о причинах как-то не задумывался раньше.

    ОтветитьУдалить
  2. Прочитал, проникся, включил отключенное назад. Теперь матюкаясь, настраивая права для доступа к отдельным файлам для некотороых "криво написанных", но любимых прог. =)

    ОтветитьУдалить
  3. Довольно много по UAC и Delphi собрано тут.

    ОтветитьУдалить
  4. Прочитал и вспомнил об основаш UNIX где под root ом(Виндосовский Администратор) только для настройки пользуются .
    В майкрософт только шас до этого додумались.
    Не надо этим восхишатся потомучто они отстали от жизни не буду рассказывать какие ещё меры зашиты есть в UNIX которых нету в виндовсе .

    ОтветитьУдалить
  5. > В майкрософт только шас до этого додумались
    Ну-ну.

    ОтветитьУдалить
  6. Ну, не "шас" додумались, а в 1988 году, когда Билл Гейтс пригласил Дейва Катлера и команду, для выработки принципов Windows NT. Но вот я подозреваю, что в Unix учётные записи с правами существовали намного раньше.

    ОтветитьУдалить

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и (опционально) ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.