Произвести настройки приложения проводник для эффективной работы с ntfs

Обновлено: 06.07.2024

Как упоминалось выше, файловой системой называется структура, которая определяет правила хранения и размещения файлов на дисках вашего компьютера. Операционная система Windows XP поддерживает файловые системы FAT, FAT32 и NTFS. Выбрать файловую систему для любого жесткого диска можно при его форматировании. При установке Windows XP вы можете отформатировать жесткий диск, выбрав нужнук систему. Кроме того, выбор файловой системы актуален при установке в компьютер нового жесткого диска. Самая старая файловая система FAT сегодня практически не используется, так как она поддерживает жесткие диски ограниченного объема, не более двух гигабайт. Даже самые простые современные жесткие диски имеют существенно больший объем. Система FAT 32 является модификацией FAT, поддерживающей диски размером от 512 мегабайт до 2 терабайт. Система NTFS также поддерживает диски до 2 терабайт, но вместе с этим обеспечивает повышенную надежность, безопасность и эффективность работы. Благодаря особенностям построения системы NTFS, при увеличении объема диска не происходит снижения производительности.

Однако есть недостатки и у системы NTFS. Прежде всего, если на компьютере одновременно установлено несколько операционных систем, то из систем ДОС, Windows 3 или Windows 95/98/Me данные диски прочитать невозможно. Однако такое многообразие систем встречается достаточно редко. Кроме того, для эффективной работы с дисками NTFS требуется большой объем оперативной памяти. Однако Windows ХР и так требует не менее 128 мегабайт памяти для нормальной работы, так что в любом случае вам потребуется достаточно много памяти. Рекомендуем использовать файловую систему NTFS, так как она дает ряд дополнительных возможностей. Вы можете изменить некоторые параметры любых файлов и папок, однако, если они расположены на диске с файловой системой NTFS, появляются дополнительные возможности настройки. Щелкните правой кнопкой мыши на значке любого файла или папки, а в появившемся вспомогательном меню выберите команду Свойства (Properties). На экране появится диалог просмотра и настройки свойств (Рис. 2.17). В верхней части диалога выведена подробная информация о типе и расположении файла, его размере и других характеристиках. При просмотре свойств папки в диалоге указан суммарный размер всех файлов, расположенных в ней и во всех вложенных папках. Флажки в нижней части диалога позволяют изменить атрибуты файла. Можно сделать файл или папку скрытой или разрешить только чтение. Эти атрибуты можно установить для дисков с любой файловой системой.

Параметры папки

Рис. 2.17. Параметры папки

Флажок Шифровать содержимое для защиты данных (Encrypt contents to secure data) позволяет зашифровать файлы, так что никто не сможет прочитать вашу конфиденциальную информацию. Причем, в отличие от шифрования сжатых папок, данный вид защиты очень надежен.

Установив нужные флажки, нажмите кнопку ОК, чтобы закрыть диалог и вернуться к предыдущему диалогу. В этом диалоге также нажмите кнопку ОК. Если вы изменили атрибуты папки, появится диалог, спрашивающий, хотите ли вы изменить атрибуты только данной папки или нужно изменить атрибуты всех вложенных файлов и папок. Установив переключатель в нужное положение, нажмите кнопку ОК, и атрибуты файлов изменятся. Если вы выбрали сжатие или шифрование папки, в этот момент начнется процедура данного преобразования файлов. Это может занять достаточно много времени. В Windows XP можно настроить, чтобы сжатые файлы и папки отображались в списке синим цветом, а зашифрованные -зеленым.

Следует особо отметить, что после того, как файл или папка зашифрованы или сжаты, с ними работают так же, как и с другими файлами или папками. Шифрование и сжатие являются прозрачными для пользователя, выполнившего эти операции. Перед использованием вовсе не требуется расшифровывать или разархивировать файл. Открытие, редактирование и сохранение файла выполняется как обычно. При этом посторонний человек, пытающийся получить доступ к зашифрованным файлам, не сможет этого сделать. Только пользователь, зашифровавший файл, может открыть его. Естественно, если злоумышленник вошел в Windows XP под вашим именем, система не сможет оградить от него файлы.

Следует помнить, что можно зашифровать только файлы и папки, находящиеся на дисках с файловой системой NTFS. Если вы перенесете файл на другой диск, он может быть расшифрован. Одновременное использование сжатия и шифрования не допускается. Шифрование папки или файла не защищает их от удаления. Любой пользователь, имеющий права на удаление, может удалить зашифрованные папки или файлы.

Вкладка Действующие разрешения (рис.1.16.) окна Дополнительные параметры безопасности предназначена для проверки тех прав, которые получат поль­зователи после всех настроек и оптимиза­ций, которые можно провести в системе. Для проверки установленных прав следует:

- перейти во вкладку Действующие разрешения окна Дополнительные параметры безопасности и нажать кнопку Выбрать (рис.1.16.);

- в появившемся новом окне нажать кнопку Типы объектов (рис.1.17.);

- из списка выбрать объект (Пользователь, Группа) и нажать кнопку ОК;

- в окне Выбор: Пользователь или группа нажать кнопку Дополнительно;

- появится новое окно Выберите тип объекта (рис.1.17.);

- нажать кнопку Поиск (рис.1.18.);

- из раскрывшегося списка выбрать пользователя или группу и нажать ОК;

- появится окно с выбранным объектом, нажать кнопку ОК;

- появится список действующих разрешений для выбранного пользователя или выбранной группы (рис.1.19.).


Рисунок 1.16. Окно анализа эффективных прав пользователя


Рисунок 1.17. Окно выбора типа объекта


Рисунок 1.18. Дополнительное диалоговое окно выбора пользователя


Рисунок 1.19. Действующие разрешения выбранного пользователя

В результате выполненных действий ОС покажет, какие права имеет данный пользователь по отношению к данному объекту файловой системы (рис.1.19.).

Для системы безопасности файловой системы нет особой разницы между Файлами и папками. Описанные выше действия применимы и к файлам.

Механизм на­следования разрабатывался для быстрого, удобного, эф­фективного и безопасного управления файлами. Так как файлов в больших системах может быть десятки тысяч, то было очень утомительно заниматься каждым файлом отдельно. Это заставило компанию Microsoft разработать и внедрить в файловую систему NTFS более мощную и совер­шенную систему для управления правами доступа. Специалисты компании выбрали систему наследования прав, т.к. учет механизма наследования делает воз­можным сделать надежнее и безопаснее распределение прав на файлы и папки даже еще на стадии проектирования системы, до фазы ее разверты­вания. Данная система предоставляет возможность задать общие права для всех файлов, исправляя их на другие лишь в случаях необходимости.

Но есть и еще один случай, когда может пригодиться механизм наследования. Допустим, при установке нового приложения файл, который приложение копирует в определенную папку, не получает правильно выставленных прав безопасности. В итоге запущенный вирус или какая-либо вредоносная про­грамма может получить непосредственный доступ к этому файлу, а через него и к операционной системе. Такая ситуация случается если данный модуль является частью драйвера и загружается операционной системой на стадии инициализации и загрузки ОС. Использование механизма наследования с заранее продуманными правами доступа полностью устранит возникновение подобных ситуаций. Пре­имущества механизма наследования очевидны.

Практическая часть

Вопросы по разделу

1. Что, по Вашему мнению, представляет собой файловая система?

2. Перечислите типы файловых систем, используемых линейкой Windows.

3. Опишите строение файловой системы FAT.

4. Перечислите существенные различия между видами файловых систем под общим назва­нием FAT.

5. Почему файловой системе FAT необходимо постоянное обслуживание?

6. Какие еще функции следует периодически выполнять в файловой системе FAT и почему?

7. Какие средства управления файловой системой FAT Вы знаете?

8. Какие программы для ускорения доступа к диску Вы знаете? Опишите одну из них.

9. Перечислите недостатки файловой системы FAT. Какой самый основной недостаток?

10. Опишите механизм проникновения вирусов в файловую систему FAT?

11. Чем отличается файловая система NTFS от файловой системы FAT?

12. Каким механизмом обеспечивается устойчивость к сбоям файловой системы NTFS?

13. Опишите механизм, обеспечивающий устойчивость к сбоям файловой системы NTFS?

14. Какой механизм позволяет пользователям сохранять свои данные и информацию в файловой системе NTFS?

15. Как определить тип файловой системы, используемой ОС?




16. Опишите назначение команды Очистка диска.

17. Опишите назначение команды Сжимать диск для эконо­мии места.

18. Какое программное обеспечение позволяет не обращать внимания на права доступа и работать с NTFS также прозрачно и небезопасно, как с FAT?

19. Опишите порядок развертывания файловой системы NTFS на компьютере с установленной файловой системой FAT.

20. В каком случае можно проводить операцию развертывания файловой системы NTFS?

21. Каким образом можно настроить приложение Проводник для эффективной работы с файловой системой NTFS? В качестве примера приведите копии окон своего ПК.

22. Как определить права пользователя к объектам файловой системы? Приведите примеры в виде копии окон своего ПК.

23. Какое соглашение в файловой системе действует в новейших ОС?

24. Какое соглашение в файловой системе действует в старых ОС?

25. Опишите различия в соглашениях, приняты в файловых системах.

26. С какими правами рекомендуется работать с файловой системой NTFS и почему?

27. Что случиться с ОС Windows XP, если группа пользователей SYSTEM будет удалена?

28. Опишите действия, которые следует предпринять для восстановления (реанимации) ОС Windows XP?

29. Что произойдет, если был запрещен доступ группы SYSTEM к пользовательской папке? Как устранить эту проблему?

30. Перечислите типы групп пользователей и их различия.

31. Перечислите известные Вам разрешения (права) для пользователя.

32. Каким образом определяются/устанавливаются права пользователя?

33. Опишите, что означает, по Вашему мнению, «механизм наследования прав объектами файловой системы».

34. Как определить список объектов – пользователей и групп, кото­рые имеют различные права к выбранному объекту файловой системы NTFS?

35. Что означает пункт списка Унаследовано от в окне вкладки Разрешения программы Свойства папки (файла)?

36. Как определить расширенные настройки системы безопасности для выбранной папки (файла)?

37. В каком случае производится наследование файловых прав доступа?

38. Что определяет строка в столбце Унаследовано в окне Разрешения?

39. Что нужно сделать для просмотра полного набора прав, которыми обладает выбранный файловый объект?

40. Перечислите расширенные права выбранного файлового объекта (без описания).

41. Что означает опция вкладки Объект программы Свойства папки (файла) «Применять эти разрешения к объектам и контейнерам только внутри этого контейнера»?

42. Как определить владельца файловой системы NTFS?

43. Что произойдет при активизации режима Заменить владельца субконтейнеров и объектов во вкладке Владелец программы Свойства папки (файла)?

44. Как проверить права, которые получат поль­зователи после всех настроек и оптимиза­ций по отношению к выбранной папке (файлу)?

45. Перечислите отличия для системы безопасности в файловой системе между Файлами и папками?

46. Какую возможность предоставляет в файловой системе учет механизма наследования?

47. Какая ситуация может произойти при отсутствии механизма наследования во время установки нового приложения на ПК?

Упражнение 1

1.Определить тип файловой системы, используемой ОС.

2.В случае необходимости развернуть файловую систему NTFS на своем компьютере.

3.Произвести настройки приложения Проводник для эффективной работы с NTFS.

4.Определить права доступа пользователей к объектам файловой системы.

5.Установить (изменить) новые права доступа пользователей к объектам файловой системы.

6.Изучить механизм наследования прав объектами файловой системы.

2.3.Порядок отчетности и форма контроля выполнения работы

Контроль выполнения задания производится по окончании занятия.

[1] Название «сектор» пошло от правила, что все накопители разбиты на сектора, чтобы к ним было просто обращаться ОС, например, по номеру сектора.

Если на компьютере установлена файловая система FAT, то для установки файловой системы NTFS следует воспользоваться программой-конвертером файловых сис­тем convert.exe, входящей в стандартный комплект поставки Windows XP. Запуск этой программы производится в текстовом командном окне, например, программы cmd.exe. Программу можно запустить, указав ключ "/help" в качестве аргумента (рис. 1.3).


Рисунок 1.3. Запуск программы конвертации файловых систем


Рисунок 1.4. Помощь при работе с программой convert.exe

Для получения дополнительных советов от Micro­soft по использованию данной программы по ключевому слову «» в файле помощи Windows XP (Пуск\Справка) можно найти интересующую информацию (рис. 1.5).


Рисунок 1.5. Помощь по работе с программой конвертации файловых систем

Программа convert.exe берет за образец для конвертирования файловую систему FAT и делает из нее NTFS. Однако в FAT нет ни системных прав, ни каких-либо других объектов данных, сопровождающих файлы и папки в файловой системе NTFS. По­этому следует с помощью специальной программы, входящей в состав Windows XP, поставить права системы безопасности на соз­данной системе NTFS. Для этого нужно в текстовом командном окне выполнить следующую команду:

Secedit /configure /db С:\%SystemRoot%\temp\temp.mdb /Cfg c:\%System Distrib%\inf\defltwk.inf /areas filestore,

где: %systemRoot% – каталог, в который установлена система;

%SystemDistrib% – каталог, в котором находится дистрибутив ОС Windows XP.

Проводить такую операцию нужно из пользовательской учетной записи, имеющей права администратора системы. В результате вы­полнения системой данной команды восстановятся права по умолчанию для папок и файлов в каталоге, где установлена система: C:\WIND0WS и C:\Program Files. Для папки Documents and Settings следует устанавливать права вручную. После завершения данного процесса диск будет находиться под управлением файловой системы NTFS.

1.5. Настройка приложения Проводник для эффективной работы с ntfs

Для определения прав файлов и папок в NTFS следует:

запустить программу Свойства папки: Пуск\Панель управления\ Свойства папки (рис.1.6.);

выбрать закладку Вид;

в разделе Дополнительные параметры будут отображены текущие свойства папок.


Рисунок 1.6. Окно настройки отображения файлов и папок

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

Примечание: для того, чтобы все программы, файлы и ссылки активировались с одного щелчка мышью, то необходимо поставить опцию Щелчки мышью в положение Открывать одним щелчком, выделять указателем (рис.1.6.).

TransactionMaster

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

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

Давайте разберёмся, как же это работает, поэкспериментируем с моей программой, и поймём, при чём тут вообще песочницы.

Репозиторий

Для тех, кому не терпится попробовать: TransactionMaster на GitHub.

Теория

Поддержка транзакционной NTFS, или TxF, появилась в Windows Vista, и позволила существенно упростить код, отвечающий за восстановление при ошибках в процессе обновления ПО и самой ОС. Фактически, задачу по восстановлению перенесли на ядро операционной системы, которое стало применять полноценную ACID -семантику к файловым операциям — только попроси.

Для поддержки этой технологии, были добавлены новые API функции, которые дублировали уже имеющуюся функциональность, добавляя один новый параметр — транзакцию. Сама транзакция стала одним из многих объектов ядра ОС, наряду с файлами, процессами и объектами синхронизации. В простейшем случае, последовательность действий при работе с транзакциями заключается в создании объекта транзакции вызовом CreateTransaction , работе с файлами (с использованием таких функций как CreateFileTransacted , MoveFileTransacted , DeleteFileTransacted и им подобных), и применению/откату транзакции с помощью CommitTransaction / RollbackTransaction .

Теперь давайте взглянем на архитектуру этих функций. Мы знаем, что документированный слой API, из таких библиотек как kernel32.dll , не передаёт управление в ядро ОС напрямую, а обращается к нижележащему слою абстракции в пользовательском режиме — ntdll.dll , который уже и производит системный вызов. И вот тут нас ожидает сюрприз: никакого дублирования функций для работы с файлами в контексте транзакций в ntdll, как и в ядре, просто нет.

Слои API

И тем не менее, прототипы этих фукнций из Native API не менялись с незапамятных времён, а значит о том, в контексте какой транзакции выполнять операцию они узнают откуда-то ещё. Но откуда? Ответ заключается в том, что у каждого потока есть специальное поле, в котором хранится дескриптор текущей транзакции. Область памяти, где оно находится, называется TEB — блоком окружения потока. Из известных вещей, там также хранятся код последней ошибки и идентификатор потока.

Таким образом, функции с суффиксом *Transacted устанавливают поле текущей транзакции, вызывают аналогичную функцию без суффикса, а затем восстанавливают предыдущее значение. Делают они это, используя пару функций RtlGetCurrentTransaction / RtlSetCurrentTransaction из ntdll . Код самих функций весьма прямолинеен, за исключением случая с WoW64 , о чём будет ниже.

Подводные камни

Cамые первые эксперименты показали, что идея работоспособна: Far Manager, которым я пользуюсь вместо проводника Windows, прекрасно переживает подмену транзакций на лету, и позволяет смотреть на мир в их контексте. Но также обнаружились и программы, которые постоянно создают новые потоки для файловых операций. И в первоначальном сценарии это прореха, поскольку отслеживать создание потоков в другом процессе не слишком-то удобно (не говоря уже о том, что "опоздания" здесь критичны). Примером приложения из второго класса является недавно портированный WinFile.

Отслеживающая DLL

К счастью, синхронное отслеживание создания потоков с последующей настройкой для них транзакций совершенно элементарно изнутри целевого процесса. Достаточно внедрить в него DLL, и загрузчик модулей будет вызывать её точку входа с параметром DLL_THREAD_ATTACH каждый* раз при создании нового потока. Реализовав эту функциональность я починил совместимость ещё с доброй дюжиной программ.

* Технически, вызов срабатывает не всегда, и это поведение иногда можно пронаблюдать в интерфейсе моей программы. По большей части, исключениями являются потоки из рабочего пула самого загрузчика модулей. Всё дело в том, что оповещение DLL-библиотек происходит под блокировкой загрузчика, и это значит: загружать новые модули в этот момент нельзя. А потоки загрузчика, как вы понимаете, именно этим и занимаются, распараллеливая доступ к файловой системе. Для подобных случаев предусмотрено исключение: если указать THREAD_CREATE_FLAGS_SKIP_THREAD_ATTACH в качестве флага при вызове NtCreateThreadEx , можно избежать присоединения нового потока к существующим DLL, и, соответственно, взаимных блокировок. Примерно это здесь и происходит.

Запускаем проводник

Осталась третья, последняя категория программ, которые до сих пор падают при попытке заставить их работать внутри транзакции. Одна из этих программ — проводник Windows. Я не могу точно диагностировать проблему, но приложение это сложное, и горячее переключение внутрь транзакции сказывается на нём не очень. Возможно, причина в том, что оно имеет много открытых файловых дескрипторов, часть из которых перестаёт быть действительными в новом контексте. А может это что-то ещё. В подобных ситуациях помогает перезапуск процесса, да так, чтобы он с самого начала работал в транзакции. Тогда никаких несогласованностей возникнуть не должно.

А потому, я добавил в программу возможность запуска новых процессов, для которых транзакция и слежение за новыми потоками настраивается ещё до достижения точки входа, пока процесс приостановлен. И знаете что, оно заработало! Правда, поскольку проводник активно использует объекты COM вне процесса, предпросмотр ломается при перемещении файлов. Но в остальном — всё стабильно.

Что там с WoW64?

Эта подсистема для запуска 32-битных программ на 64-битных системах является крайне удобным инструментом, но необходимость учёта её особенностей часто осложняет системное программирование. Выше я упоминал, что поведение Rtl[Get/Set]CurrentTransaction заметно отличается в случае подобных процессов. Причина этому кроется в том, что потоки в WoW64-процессах имеют целых два блока окружения. Они имеют разные размеры указателя, и их желательно поддерживать в согласованном состоянии, хотя, в случае транзакций, 64-битный TEB имеет приоритет. Когда мы устанавливаем транзакции удалённо, мы должны воспроизвести поведение этих функций. Это не сложно, но забывать об этом не стоит, а подробности можно посмотреть здесь. И последнее, для WoW64 процессов нужна дополнительная 32-битная копия нашей отслеживающей DLL.

Нерешённые проблемы

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

Во вторых, особого внимания заслуживает случай с исполняемыми файлами, которых не существует снаружи транзакции. Помнится, был какой-то вирус, который обманывал наивные антивирусы подобным образом: распаковывался внутрь транзакции, запускал себя, а затем откатывал транзакцию. Процесс есть, а исполняемого файла нет. Антивирус мог решить, что сканировать нечего, и проигнорировать угрозу. Здесь тоже нужно поработать над креативными решениями, поскольку, по некоторой причине, NtCreateUserProcess (и, соответственно, CreateProcess ) игнорирует текущую транзакцию. Конечно, всегда остаётся NtCreateProcessEx , но с ним ожидается много возни для устранения проблем с совместимостью. Ничего, что-нибудь придумаю.

Причём тут песочницы?

Взгляните на картинку. Здесь три разных программы показывают содержимое одной и той же папки из трёх разных транзакций. Классно, правда?

Взгляд изнутри транзакций

И всё же, моя программа — ни в коем случае не песочница, ей не хватает одной важной детали — границы безопасности. Конечно, это не мешает некоторым компаниям продавать сходные поделки под видом полноценных песочниц, позор им, что я могу сказать. И, несмотря на то, что это кажется совершенно невозможным, — как вообще мы можем запретить программе изменить переменную в своей же памяти, будь мы даже отладчиком? — у меня припасён один восхитительный трюк, который позволит завершить начатое и создать первую известную мне песочницу, которая не будет требовать драйвера, но будет виртуализировать файловую систему. А до тех пор — ждите обновлений, используйте Sandboxie и экспериментируйте с технологией AppContainer. Спасибо за внимание.

Читайте также: