Есть один ресторан, который я посещаю регулярно. Это приятное место, но одно из блюд там неизменно готовят уже на протяжении семи лет. Когда официант начинает перечислять «блюда дня», мне так и хочется прервать его, самому закончить описание и, если удастся избежать удара перечницей по голове, добавить: «Это блюдо было в меню еще когда вы учились в средней школе!»
Некоторые программы Windows напоминают мне такое «специальное» блюдо с семилетним стажем: это старые, проверенные инструменты, которые неизменно и по непонятной причине попадают в состав дополнительных пакетов Support Tools или Resource Kit, хотя администраторы используют их чаще, чем многие инструменты из «основного состава». Однако с выходом Windows Vista этот сценарий изменился. Полезные утилиты, такие как Robocopy, SC и Whoami, теперь стали официально поддерживаемыми инструментами основного пакета.
Мне уже приходилось писать о Whoami, но реализованные в Vista компоненты User Account Control (UAC) и Windows Integrity Control (WIC) делают эту утилиту еще более полезной. Так что настало время вернуться к обсуждению этого замечательного инструмента.
Как работает утилита
Чтобы увидеть Whoami в действии, нужно войти в Vista с учетной записью администратора, открыть командную строку и набрать команду
whoami /all
Как всегда, эта команда обеспечит отображение пользовательского имени, SID, групп, к которым принадлежит зарегистрировавшийся пользователь (с указанием их SID), и привилегий его учетной записи. Однако при регистрации в системе Vista в качестве администратора приложение UAC генерирует не один, а два маркера: административный — administrative token (AT), с данными об административной групповой принадлежности пользователя и привилегиях, и стандартный — standard user token (SUT), без каких-либо административных прав.
При запуске программы Vista, используя набор критериев, решает, следует ли снабдить эту программу «всемогущим» маркером AT или «бесправным» SUT. Если система не докучает вам диалоговыми окнами Continue/Cancel, это означает, что программе, вероятно, назначен маркер SUT. И, поскольку в данном случае диалоговое окно Continue/Cancel не отображается, командная строка имеет маркер SUT. Для проверки можно удостовериться, что ваша административная групповая принадлежность не указана, а есть лишь комментарий, согласно которому ваше членство в группе «Администраторы» запрещено — Group used for deny only.
Если открыть другое командное окно, но сначала щелкнуть правой клавишей мыши на пиктограмме Command Prompt и выбрать Run as administrator, чтобы выполнить ту же команду от имени администратора, система выдаст информацию о вашей полной групповой принадлежности со значительно большими привилегиями, чем в «бесправном» командном окне с маркером SUT. Кстати, если вас утомляет просмотр длинных разорванных строк, выводимых в стандартном командном окне, попробуйте использовать более удобный для чтения вариант при помощи команды:
whoami /all /fo list
Можете также после /fo набрать table (что дает наблюдаемый ранее вывод рваных строк) или csv (вывод готовых к импорту значений, разделенных запятыми (CSV)). Чтобы сократить объем выводимой информации, нужно заменить /all на /user, дабы вывести только пользовательское имя и SID, на /groups — только групповую принадлежность или на /priv — только пользовательские привилегии.
WIC в действии
Когда у вас есть два открытых командных окна — одно с маркером AT (в названии этого окна есть слово «administrator»), а другое с маркером SUT — наберите команду
whoami /groups /fo list
для вывода вашей групповой принадлежности. При этом следует отметить в административном окне принадлежность к странной группе: Whoami выдает SID неизвестного типа S-1-16-12288 и имя группы Mandatory LabelHigh Mandatory Level. Именно здесь обнаруживает свое действие механизм WIC (прежнее название — Mandatory Integrity Control (MIC)).
Vista распределяет пользовательские учетные записи, процессы и объекты (например, файлы и папки) по нескольким уровням, которые можно было бы назвать «уровнями доверия», но в Vista используется название integrity (целостность). Предусмотрены уровни untrusted, low, medium, high, system и trusted installer. Эта тема слишком о бширна для данной статьи, поэтому скажу лишь, что любая попытка процесса изменить объект, имеющий более высокий уровень целостности, оказывается неудачной, даже если маркер процесса предполагает уровень доступа Full Control к объекту. По умолчанию Vista присваивает стандартным пользователям уровень целостности medium, а администраторам — уровень high. Упомянутый ранее уровень High Mandatory Level указывает на то, что маркер административного командного окна имеет уровень целостности high. В другом командном окне в списке Whoami /groups /fo обнаруживается уровень целостности medium.
Пусть в Vista у Whoami не появилось новых ключей, но прибавилось легитимности, и, что еще важнее, появились новые возможности. Убедитесь сами!
Марк Минаси - редактор Windows IT Pro, MCSE и автор книги Mastering Windows Server 2003 (издательство Sybex). mark@minasi.com