Использование и для обеспечения безопасности — КиберПедия 

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Использование и для обеспечения безопасности

2021-01-29 57
Использование и для обеспечения безопасности 0.00 из 5.00 0 оценок
Заказать работу

 

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

Однако, после открытия файла условие состязания больше не представляет проблему. Программа может использовать с именем файла для получения информации о файле. Если получены сведения, которые ожидались, после открытия файла может проверить, что файл тот же самый (сравнив поля и структур «до» и «после»).

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

Эти системные вызовы, также как, сравнительно недавние;[63] в старых системах Unix их не было, хотя в современных совместимых с POSIX системах они есть.

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

 

 

Резюме

 

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

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

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

• Каталоги создаются с помощью, а удаляются с помощью; перед удалением каталог должен быть пустым (не оставлено ничего, кроме '' и ''). GNU/Linux версия функции ISO С вызывает соответствующие функции или.

• Каталоги обрабатываются с помощью функций,, и. содержит номер индекса и имя файла. Максимально переносимый код использует в члене только имя файла. Функции BSD и для сохранения и восстановления текущего положения в каталоге широко доступны, но не полностью переносимы, как другие функции работы с каталогами.

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

• Макрос xxx в дает возможность определить тип файла. Функции и из дают возможность расшифровки значений, представляющих блочные и символьные устройства.

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

• Несколько разнообразных системных вызовов обновляют другие данные: семейство используется для смены владельца и группы, процедуры для прав доступа к файлу, a для изменения значений времени доступа и изменения файла.

 

Упражнения

 

1. Напишите программу ''. Ввод представляет собой значение, полученное из поля структуры; т.е. оно содержит как биты прав доступа, так и типа файла.

Вывод должен представлять строку в 10 символов, идентичную первому полю вывода ''. Другими словами, первый символ обозначает тип файла, а остальные девять – права доступа.

Когда установлены биты и, используйте вместо; если установлен лишь бит, используйте. То же относится к битам и. Если установлены оба бита и, используйте; для одного используйте.

Для простоты можете использовать статический () буфер, содержимое которого перезаписывается при каждом вызове процедуры.

2. Доработайте, чтобы она вызывала для каждого найденного имени файла. Затем выведите номер индекса, результат вызова, число ссылок и имя файла.

3. Доработайте так, что если файл является символической ссылкой, программа будет также выводить имя указываемого файла.

4. Добавьте такую опцию, что если имя файла является именем подкаталога, программа рекурсивно входит в него и отображает сведения о файлах (и каталогах) этого подкаталога. Необходим лишь один уровень рекурсии.

5. Если вы не работаете на системе GNU/Linux, запустите (см. раздел 5.2 «Создание и удаление каталогов») на своей системе и сравните результаты с приведенными нами.

6. Напишите программу. Посмотрите свою локальную справочную страницу для mkdir (1) и реализуйте все ее опции.

7. В корневом каталоге,, как номер устройства, так и номер индекса для '' и '' совпадают. Используя эту информацию, напишите программу.

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

Отображение имени каталога в обратном порядке, от текущего каталога до корневого, легко. Как будет справляться ваша версия с выводом имени каталога правильным образом, от корневого каталога вниз?

8. Если вы написали, использовав рекурсию, напишите ее снова, использовав итерацию. Если вы использовали итерацию, напишите ее с использованием рекурсии. Что лучше? (Подсказка: рассмотрите очень глубоко вложенные деревья каталогов.)

9. Тщательно исследуйте функцию (см. раздел 5.5.3.1 «Подделка»). Какой ресурс не восстанавливается, если одна из проверок в середине не выполняется? (Спасибо Джеффу Колье (Geoff Collyer).)

10. (Трудное) Прочтите страницу справки для chmod (1). Напишите код для анализа аргумента символических опций, который позволяет добавлять, удалять и устанавливать права доступа на основе владельца, группы, других и «всех».

Когда вы решите, что это работает, напишите свою собственную версию, которая применяет назначенные права доступа к каждому файлу или каталогу, указанному в командной строке. Какую функцию вы использовали, – или и – и почему?

 

 

Глава 6


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

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.016 с.