П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 178146 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 75594 раз(а).

Учебник HTML.
Просмотров 74080 раз(а).

Руководство по PHP5.
Просмотров 45005 раз(а).

Хостинг через призму DNS.
Просмотров 51934 раз(а).

Подборка текстов стандартных документов.
Просмотров 45110 раз(а).

Учебник PHP - Самоучитель
Просмотров 51340 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 51794 раз(а).

Внешние атаки...
Просмотров 41935 раз(а).

Учебник PHP.
Просмотров 37278 раз(а).

SSI в примерах.
Просмотров 27848 раз(а).






 
 
| Добавить в избранное | Сделать стартовой Project.Net.Ru | Помощь





Основные принципы

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

Системный вызов Использование
fchdir (int fd) Переходит в дерикторию, представленную fd.
fchmod (int fd, mode_t mode) Изменяет права доступа к файлу.
fchown (int fd, uid_t uid, gid_t gif) Изменяет владельца файла.
fstat (int fd, struct stat * st) Обращается за информацией, содержащейся в индексном дескрипторе физического файла.
ftruncate (int fd, off_t length) Обрезает существующий файл.
fdopen (int fd, char * mode) Инициализирует ввод-вывод из уже открытого дескриптора. Это процедура библиотеки stdio, а не системный вызов.

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

Мы настаиваем на необходимости проверять возвращаемый код системных вызовов. Например, сошлемся (даже если это не имеет ничего общего с условиями перехвата) на проблему, обнаруженную в старых реализациях /bin/login, где пренебрегали проверкой кода ошибки. Данное приложение автоматически предоставляло доступ с правами root, если не находило файл /etc/passwd. Такое поведение может показаться приемлемым, если дело касается восстановления поврежденной файловой системы. Однако, проверка, что невозможно открыть файл, вместо проверки на существование файла, оказалась менее приемлема. Вызов /bin/login после открытия максимально возможного количества дескрипторов, позволял получить любому пользователю доступ с правами root... Закончим с этим отступлением, которое показывает, насколько важно проверять не только успешно или нет прошел системный вызов, но и код ошибки, перед тем как предпринимать какие-либо действия, связанные с безопасностью системы.

Назад | Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru