Forum Webscript.Ru
Программирование => Perl => Тема начата: Skif от 22 Марта 2005, 10:00:15
-
Возможно немного все же оффтопик, но меня очень интересует... :insane:
Собственно вопрос, кто что использует для создания временных файлов для работы GD? Я сейчас практикую создание файлика в /tmp -директории, которая находиться за пределами доступности web-сервера с последующим fork-ом для копирования используя sudo. Для обеспечения уникальности имени рисунка - CGI::Session (имя сессии + имя рисунка (а-ля news, about, etc))потом делаю удаление файла в конце скрипта.
Что мне не нравиться в таком подходе - если я в /tmp удаляю при помощи стандартной функции unlink, то при удалении из папки рисунков в области видимости - приходиться использовать rm из системы. Второе - "утяжеление" кода - получается перегружен форками. Вроде бы и не сложно, но все же. Третье, если я делаю не для своего хостинга движок - очень трудно уломать админа "где-то там" добавить в sudo user пользователя, пусть даже с ограниченными правами и т.д. А иногда и вообще установить sudo. В таких случаях мне приходиться давать на папку временных рисунков права 777... Хотя сие мне не нравиться.
Может кто-то использует альтернативные решения?
-
В принципе это брешь в безопасности такая работа с временными файлами. В camel book рекомендуют использовать модуль File::Temp - для безопасного открытия временных файлов
(http://search.cpan.org/~tjenness/File-Temp-0.16/Temp.pm), . Хотя я с GD не работал, но суть от этого я думаю не меняется.
-
Вот сейчаc сижу читаю содержимое модуля и не могу врубиться.
Там по любому нужно создавать временную директорию с правами на запись. Так как мне необходимо что бы генерирующиеся рисунки были доступны web-серверу - генерить надо в пределах его "видимости", тобишь пусть корень распологается www/ следовательно www/image/ должна иметь права позволяющие скрипту записывать данные туда (7xx/6xx - без разницы). Так как скрипт выполняется с правами сервера, то это права www или nobody, обратно к верхнему вопросу.
Или я что-то не понимаю?