Файл: Руссинович М., Маргозис А. Утилиты Sysinternals. Справочник администратора 2012.pdf

ВУЗ: Не указан

Категория: Книга

Дисциплина: Операционные системы

Добавлен: 29.10.2018

Просмотров: 32977

Скачиваний: 742

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Глава 11

Утилиты для работы с файлами

В этой главе рассматриваются утилиты Sysinternals, предназначенные для 
управления файлами. Все эти утилиты являются консольными:
•  Strings выполняет поиск встроенного текста ASCII и Unicode в файлах;
•  Streams выявляет объекты файловой системы, имеющие альтернативные 

потоки данных, и, если указано, удаляет эти потоки;

•  Junction и FindLinks показывают и позволяют управлять соединениями 

папок и жесткими ссылками (два типа ссылок NTFS);

•  DU показывает логический размер иерархии папок и ее размер на диске;
•  PendMoves и MoveFile показывают и регистрируют операции с файла-

ми, которые будут выполнены при следующей загрузке системы.

Strings

В программировании термин «string» (строка) обозначает структуру дан-
ных, состоящую из последовательности символов, обычно представляющих 
текст, понятный человеку. Существуют различные утилиты, позволяющие 
искать в файлах встроенные строки. Однако многие из них (например, 
утилита findstr, входящая в состав Windows) ищут только текст в формате 
ASCII и игнорируют текст Unicode, тогда как другие (например, find, тоже 
входящая в состав Windows) некорректно выполняют поиск в двоичных 
файлах. Утилита Strings из пакета Sysinternals не имеет подобных проблем, 
что делает ее полезной для поиска файлов, а также для исследования со-
держимого неизвестных файлов в поисках строк, которые могут прояснить 
происхождение и назначение этих файлов.

Синтаксис командной строки Strings:

strings [-a] [-b байты] [-n длина] [-o] [-q] [-s] [-u] файл_или_папка

Параметр файл_или_папка обязателен. Он принимает знаки подстанов-

ки (например, *.dll). Strings выполняет поиск всех подходящих файлов и 
по умолчанию выводит в стандартный поток вывода все найденные стро-
ки ASCII и Unicode длиннее трех символов, в порядке их вхождения в теле 
файла. Чтобы искать только строки ASCII или Unicode, используйте пара-

SIN_ch_11.indd   327

27.12.2011   14:35:51


background image

328  Часть 

II   

Работа с утилитами

метры -a или -u, соответственно. Параметр -s выполняет рекурсивный по-
иск папок. Чтобы указать минимальную длину строки (по умолчанию 3), 
укажите ее после параметра -n. Если добавить параметр -o, будет сообщаться 
смещение в файле, по которому начинается строка. Чтобы выполнять по-
иск только в начале файла, используйте параметр -b для ограничения числа 
проверяемых байтов. Наконец, параметр -q (quiet, тихий режим) убирает за-
головок Strings из выходных данных; это полезно, когда выходные данные 
будут обрабатываться другой утилитой.

Следующая команда выполняет в первых 850000 байтах explorer.exe по-

иск строк Unicode длиной не менее 20 символов, убирая текст заголовка 
Strings. Полученные строки сортируются по алфавиту. На рис. 11-1 показана 
часть результатов.

strings -b 850000 -u -n 20 -q explorer.exe | sort

Рис. 11-1.  Извлечение текста из explorer.exe при помощи Strings

Streams

Утилита Streams показывает объекты файловой системы, имеющие альтернатив-
ные потоки данных, и позволяет удалять их. NTFS предоставляет возможность 
создавать в файлах и папках альтернативные потоки данных. По умолчанию 
файл не имеет альтернативных потоков, и его содержимое хранится в основном 
неименованном потоке. Но если использовать синтаксис имя_файла:имя_по-
тока
, можно выполнять чтение и запись альтернативных потоков. Не все при-
ложения имеют поддержку альтернативных потоков, но работать с такими по-
токами просто. Откройте командную строку, перейдите в папку на томе NTFS, 
в которую разрешена запись, и выполните следующую команду:

echo hello > test.txt:altdata

Вы только что создали поток с именем altdata, связанный с файлом test.

txt. Обратите внимание: если просмотреть размер файла test.txt при помощи 

SIN_ch_11.indd   328

27.12.2011   14:35:52


background image

Утилиты для работы с файлами 

Глава 11  329 

команды DIR или в Проводнике, будет показан нулевой размер (если файл 
test.txt не существовал до выполнения указанной команды), а при открытии 
в текстовом редакторе этот файл будет пустым. (Начиная с Windows Vista, 
для просмотра сведений об альтернативных потоках можно использовать 
команду DIR /R.) Для просмотра содержимого альтернативного потока вы-
полните следующую команду:

more < test.txt:altdata

Команды type и more не поддерживают синтаксис альтернативных пото-

ков, но оболочка Cmd.exe и ее операции перенаправления поддерживают.

Windows применяет альтернативные потоки данных при обработке загру-

женных файлов. Служба выполнения прикреплений (Attachment Execution 
Service) Windows добавляет поток Zone.Identifier, в котором указывает зону 
безопасности, из которой получен файл, чтобы система могла продолжать 
обрабатывать этот файл в соответствии с правилами, установленными для 
этой зоны. Один из способов удаления этого индикатора из файла — от-
крыть его диалоговое окно Свойства (Properties) в Проводнике и щелкнуть 
кнопку Разблокировать (Unblock). Однако это кнопка и другие элементы 
пользовательского интерфейса, позволяющие удалить информацию о зоне 
безопасности, часто скрыты групповой политикой.

Утилита Streams проверяет указанные файлы и папки и сообщает имена 

и размеры всех обнаруженных альтернативных потоков. Можно выполнить 
поиск по структурам папок и получить список файлов и папок с альтерна-
тивными потоками. Можно также удалить эти потоки, например, чтобы раз-
блокировать загруженное содержимое. Для этого используется следующий 
синтаксис:

streams [-s] [-d] файл_или_папка

Параметр файл_или_папка является обязательным и принимает знаки 

подстановки. Например, команда streams *.exe проверяет все системные 
объекты, имя которых оканчивается на «.exe», расположенные в текущей 
папке, и выводит список тех из них, которые имеют альтернативные потоки 
данных. Выходные данные выглядят следующим образом:

C:\Users\Abby\Downloads\msvbvm50.exe:
   :Zone.Identifier:$DATA       26

В этом примере файл msvbvm50.exe имеет альтернативный поток «Zone.

ldentifier» размером 26 байт. Чтобы просмотреть содержимое этого потока, 
используйте команду more < msvbvm50.exe:Zone.ldentifier.

Параметр -s выполняет рекурсивную проверку папок, а параметр -d уда-

ляет найденные альтернативные потоки. Например, следующая команда 
выполняет поиск файлов с альтернативными потоками в папке Downloads 
пользователя Abby и удаляет все обнаруженные альтернативные потоки:

streams -s -d C:\Users\Abby\Downloads

SIN_ch_11.indd   329

27.12.2011   14:35:53


background image

330  Часть 

II   

Работа с утилитами

Streams сообщает имена удаленных альтернативных потоков.
На рис. 11-2 показаны выходные данные Streams после обнаружения и удале-

ния альтернативного потока данных Zone.Identifier из файла SysinternalsSuite.
zip. Если удалить поток Zone.Identifier перед извлечением утилит из этого ар-
хива позволяет запускать их без предупреждений безопасности и просматри-
вать справочные файлы в формате Compiled HTML (.chm).

Рис. 11-2.  Обнаружение и удаление альтернативных потоков данных

Утилиты для работы со ссылками NTFS

NTFS поддерживает как жесткие ссылки, так и мягкие, называемые также 
символьными ссылками. Жесткие ссылки доступны только для файлов, тог-
да как символьные ссылки можно использовать и с файлами, и с папками.

Жесткая ссылка позволяет создать несколько путей, ведущих на один 

файл на том же разделе. Например, если создать жесткую ссылку C:\
Docs\Spec.docx, указывающую на существующий файл C:\Users\Abby\
Documents\Specifications.docx, эти два пути будут вести к одному и тому 
же файлу на диске, который можно будет изменять, используя любой из 
этих путей. Для реализации жестких ссылок в NTFS ведется счет ссылок 
на файл, хранящийся на диске. При создании новой жесткой ссылки NTFS 
добавляет в данные ссылку с именем файла. Файл не удаляется, пока не об-
нулится его счетчик ссылок, поэтому можно удалить исходный файл (C:\
Users\Abby\Documents\Specifications.docx в нашем примере) и продол-
жать использовать остальные жесткие ссылки (C:\Docs\Spec.docx). Файл, 
на который указывают жесткие ссылки, включает не только содержимое и 
альтернативные потоки данных, но и дескриптор безопасности, временные 
штампы и атрибуты, такие как «только чтение», «системный», «скрытый», 
«шифрованный» и «сжатый».

Символьные ссылки являются строками, которые интерпретируются ди-

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

SIN_ch_11.indd   330

27.12.2011   14:35:53


background image

Утилиты для работы с файлами 

Глава 11  331 

что символьные ссылки не увеличивают счетчик ссылок исходного объек-
та файловой системы. При удалении исходного объекта данные удаляют-
ся, а символьные ссылки остаются, указывая на несуществующий объект. 
Символьные ссылки на файлы и папки имеют собственные разрешения и 
другие атрибуты, не зависящие от целевого объекта файловой системы.

Соединения очень похожи на символьные ссылки на папки, за тем исклю-

чением, что могут вести только к объектам на локальных томах. Соединения 
широко используются в Windows Vista и последующих версиях для обе-
спечения совместимости приложений. Например, в стандартной установке 
Windows 7 имя «C:\Documents and Settings» является соединением с C:\
Users. Это позволяет работать многим программам, имеющим жестко про-
писанные пути. Разрешения на доступ к таким соединениям, обеспечиваю-
щим совместимость приложений, не позволяют просматривать содержимое 
соединения, так что программы резервного копирования, не поддерживаю-
щие соединения, не копируют одни и те же файлы несколько раз. Такие сое-
динения обычно помечаются как скрытые и системные, поэтому по умолча-
нию не отображаются в списке папок.

В Windows Vista и последующих версиях ОС жесткие ссылки, символь-

ные ссылки и соединения можно создавать при помощи команды mklink, 
встроенной в Cmd.exe. Пользователи, не имеющие административных прав, 
могут использовать mklink для создания жестких ссылок и соединений. 
Для создания символьных ссылок на файлы и папки требуется привилегия 
Create Symbolic Links (Создание символьных ссылок), по умолчанию предо-
ставляемая только администраторам. В Windows XP и Windows Server 2003 
команда mklink недоступна. Жесткие ссылки можно создавать также коман-
дой fsutil hardlink, а команда fsutil reparsepoint позволяет просматривать 
подробную информацию о соединениях и символьных ссылках и удалять 
их. Однако fsutil всегда требует административных прав.

В пакет Sysinternals включены две утилиты, заполняющие некоторые про-

белы в управлении ссылками средствами Windows: Junction и FindLinks.

Junction

Junction позволяет создавать, удалять, искать соединения и отображать ин-
формацию о них. Если для работы с папкой, в которой создается или удаля-
ется соединение, достаточно разрешений, Junction не требует администра-
тивных прав и работает во всех поддерживаемых версиях Windows.

Синтаксис для создания соединения:

junction имя_соединения цель_соединения

имя_соединения — имя пути нового соединения, цель_соединения — суще-
ствующая папка, на которую указывает соединение.

Синтаксис для удаления соединения:

junction -d имя_соединения

SIN_ch_11.indd   331

27.12.2011   14:35:53