Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Использование функций WinAPI




Интерфейс командной строки cmd.exe

Управление разрешениями на уровне пользователей и групп пользователей с помощью различных интерфейсов.

Оконный интерфейс

Для создания пользователя или группы пользователей перейдите в меню Администрирование\Управление компьютером\Пользователи и группы

Для настройки разрешений конкретного файла зайдите в меню «Безопасность» в меню «Свойства». Если вкладки «Безопасность» нет, зайдите в меню Панель управления\Свойства папки\Вид и снимите флажок «Использовать простой общий доступ к файлам и папкам».

 

Кроме того, существует возможность устанавливать и/или изменять списки разрешений NTFS через интерфейс командной строки. Для этого используется следующая команда cacls:

 

 

Прототип функции CreateFile (заголовочный файл windows.h):

HANDLE CreateFile(

LPCTSTR lpFileName, // Указатель на имя файла (устройства)

DWORD dwDesiredAccess, //Параметры доступа

DWORD dwShareMode, //Разделяемый доступ

LPSECURITY_ATTRIBUTES lpSecurityAttributes, //безопасность

DWORD dwCreationDistribution,// Описание

DWORD dwFlagsAndAttributes, // Атрибуты файла

HANDLE hTemplateFile // Файл шаблона

);

Теперь рассмотрим подробно все параметры:

lpFileName - Указатель на строку содержащую имя создаваемого файла или устройства.

dwDesiredAccess - тип доступа. Может принимать значения (можно использовать одно или сразу несколько):

0 - запрос. Функция не даст реального доступа к файлу, а выполнится как тест возможности создания или открытия файла (устройства).

GENERIC_READ - получить доступ к чтению

GENERIC_WRITE - получить доступ к записи

dwShareMode - флаги, указывающие на то, как создаваемый (открываемый) объект должен разделять доступ между процессами. Это значит, как будет делится доступ к файлу с другими программами, если они тоже попытаются открыть этот файл. Параметр может принимать значения (можно использовать одно или сразу несколько):

FILE_SHARE_DELETE - другим процессам разрешается доступ к файла (устройству) только если требуется доступ на удаление (поддерживается только в Windows NT).

FILE_SHARE_READ - другим процессам разрешается только читать файл

FILE_SHARE_WRITE - другим процессам разрешается только писать в файл

lpSecurityAttributes - указатель на структуру типа SECURITY_ATTRIBUTES. Этот параметр используется только в Windows NT, в Win9x он игнорируется.

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

CREATE_NEW - создать новый файл. Если он уже существует, то произойдёт ошибка

CREATE_ALWAYS - создать новый файл. Если файл существует, то он будет перезаписан (обнулён).

OPEN_EXISTING - открыть существующий файл (устройство). Если файла нет, то произойдёт ошибка.

OPEN_ALWAYS - открыть файл. Если файла нет, то он будет создан как при использовании CREATE_NEW.

TRUNCATE_EXISTING - открыть файл и обрезать его размер до нуля. Параметр dwDesiredAccess должен содержать GENERIC_WRITE. Если файла нет, то произойдёт ошибка.

dwFlagsAndAttributes - атрибуты создаваемого файла. Параметр может принимать комбинацию из значений:

FILE_ATTRIBUTE_NORMAL

FILE_ATTRIBUTE_ARCHIVE - архивный

FILE_ATTRIBUTE_COMPRESSED - сжатый

FILE_ATTRIBUTE_HIDDEN - скрытый

FILE_ATTRIBUTE_NORMAL - нормальный

FILE_ATTRIBUTE_OFFLINE - данные файла недоступны

FILE_ATTRIBUTE_READONLY - только для чтения

FILE_ATTRIBUTE_SYSTEM - системный

FILE_ATTRIBUTE_TEMPORARY - временный

FILE_FLAG_WRITE_THROUGH - возможность записи в файл через кэш.

FILE_FLAG_NO_BUFFERING - нельзя использовать буферы или кэш

FILE_FLAG_RANDOM_ACCESS - случайный доступ. Используется для оптимизации кэша

FILE_FLAG_SEQUENTIAL_SCAN - доступ к файлу может быть последовательный от начала до конца

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

FILE_FLAG_BACKUP_SEMANTICS - Backup файл, т.е. файл резервного копирования.

FILE_FLAG_POSIX_SEMANTICS - доступ осуществляется в POSIX стандарте.

SECURITY_SQOS_PRESENT

SECURITY_ANONYMOUS - анонимный доступ

SECURITY_IDENTIFICATION - идентификационный доступ

SECURITY_IMPERSONATION - персональный доступ

SECURITY_DELEGATION - коллективный доступ

SECURITY_CONTEXT_TRACKING - динамический режим доступа

SECURITY_EFFECTIVE_ONLY - ограничение групп и привилегий

hTemplateFile - файл шаблона

 

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

 

Если произошла ошибка, то функция вернёт INVALID_HANDLE_VALUE.

Прототип функции CreateDirectory:

BOOL CreateDirectory(

LPCTSTR lpPathName, // Указатель на строку содержащую путь к новой директории

LPSECURITY_ATTRIBUTES lpSecurityAttributes // Указатель на атрибуты

);

Задание 1.

  1. Создайте 3 группы пользователей: «Cтуденты», «Преподаватели», «Другие»; 5 пользователей Student1, Student2, Teacher1, Teacher2, OtherUser и разместите их в соответствующие группы. Установите полные разрешения преподавателям, кроме смены владельца; только чтение и выполнение студентам, но запретите удаление и изменение атрибутов; только чтение остальным пользователям и полные разрешения администраторам. Протестируйте работу разрешений на примере различных пользователей.
  2. Создайте BAT-файл (*.bat), устанавливающий права доступа из задания №1 с помощью команды cacls.

3. Запустите утилиту ntfsinfo из комплекта SysInternalsSuite в командой строке в формате ntfsinfo раздел иохарактеризуйте полученные результаты.

 

Задание 2.

 

Напишите программу на языке C++ для создания файла (по вариантам):

 

1. С доступом на чтение, атрибут «скрытый», расширение (*.txt), в корневом каталоге, с перезаписью, если он уже существует, другим процессам разрешается только читать файл. Дополнительно реализовать функцию удаления файла.

2. С доступом на запись, атрибут «только чтение», в каталоге C:\Program Files, если он уже существует, то вывести сообщение об ошибке. Дополнительно проверить атрибуты с помощью функции получения атрибутов файла.

3. С доступом на чтение, атрибут «временный», расширение (*.txt), в каталоге C:\Temp, если он уже существует, то перезаписать, другим процессам разрешается писать в файл. Дополнительно реализовать функцию удаления файла.

4. С доступом на запись, атрибут «сжатый», расширение (*.ini), в каталоге C:\Windows, если он уже существует, то вывести сообщение об ошибке. Дополнительно необходимо получить список файлов данного каталога.

5. С доступом на чтение, расширение (*.txt), в каталоге C:\Windows\System, если он уже существует, то перезаписать. Дополнительно проверить атрибуты с помощью функции получения атрибутов файла.

6. С доступом на запись, атрибут «данные файла недоступны», расширение (*.txt), в каталоге C:\TempFiles, если он уже существует, то вывести сообщение об ошибке. Каталог создать с помощью функции CreateDirectory.

7. С доступом на чтение, атрибут «только для чтения», расширение (*.map), в каталоге C:\Windows\Temp, другим процессам разрешается только читать файл, если он уже существует, то перезаписать. В завершении удалить текущий каталог.

8. С доступом на запись, атрибут «временный», в каталоге C:\TMP, другим процессам разрешается писать в файл, если он уже существует, то вывести сообщение об ошибке. Каталог создать с помощью функции CreateDirectory.

9. С доступом на чтение, атрибут «скрытый», расширение (*.log), в каталоге C:\, если он уже существует, то перезаписать. Дополнительно проверить атрибуты с помощью функции получения атрибутов файла.

10. С доступом на запись, атрибут «нормальный», в каталоге C:\Work, если он уже существует, то вывести сообщение об ошибке. В завершении удалить файлы из текущего каталога.

11. С доступом на запись, атрибут «системный», в каталоге D:\Temp, если он уже существует, то вывести сообщение об ошибке. Дополнительно проверить атрибуты с помощью функции получения атрибутов файла.

12. С доступом на чтение, атрибут «архивный», если он уже существует, то перезаписать. Предварительно необходимо создать каталог D:\MyFiles

Контрольные вопросы

1. Что такое файловая система? Функции файловой системы.

2. Структура файловой системы.

3. Что такое файл?

4. Что такое атрибуты файла?

5. На что указывает расширение файла?

6. Какие вы знаете операции над файлами?

7. Какие файловые системы вы знаете?

8. Файловая система FAT32.

9. Файловая система NTFS. Атрибуты файлов. Стандартные и индивидуальные разрешения.

10. Что такое MFT?

11. Какие существуют методы доступа к файлам?

12. Что такое каталог?

13. Что означает «путь к файлу»?

14. Что такое монтирование файловой системы?

15. Что такое сектор?

16. Дайте определение кластера.

17. Что такое раздел жесткого диска? Виды разделов.

18. Что такое журналируемая файловая система?

19. Что означает API?

20. Назовите основные функции Win32API для файлового ввода-вывода.




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 824; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.