Конвертировать: не авторизовано `aaaa` @ error/constitute.c/ReadImage/453
Я хочу создать картинку с картинки convert
от ImageMagick.
И я следую этому, но есть некоторые проблемы.
Входные данные В моей оболочке Linux:
convert -background white -fill black -font FreeSerif-Bold -pointsize 36 label:'adfgh' ./test.png
Ошибка:
конвертировать: не разрешено
adfgh
@ error/constitute.c/ReadImage/453. конвертировать: отсутствует имя файла изображения./test.png
@ error/convert.c/ConvertImageCommand/3015
Мой ImageMagick: Версия:6.7.2-7, я устанавливаю его с yum install ImageMagick
,
Я невежественен. Любой совет, пожалуйста?
7 ответов
Я использую ImageMagick в php (v.7.1), чтобы нарезать PDF-файл на изображения.
Сначала я получил такие ошибки, как:
Тип исключения: ImagickException
Сообщение об исключении: не авторизовано..... @ error/constitute.c/ReadImage/412
После некоторых изменений в /etc/ImageMagick-6/policy.xml
Я начинаю получать ошибки, такие как:
Тип исключения: ImagickException
Сообщение об исключении: невозможно создать временный файл..... Отказано в разрешении @ error/pdf.c/ReadPDFImage/465
Мое исправление:
В файле /etc/ImageMagick-6/policy.xml
(или же /etc/ImageMagick/policy.xml
)
строка комментария
<!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
изменить линию
<policy domain="coder" rights="none" pattern="PDF" />
в
<policy domain="coder" rights="read|write" pattern="PDF" />
добавить строку
<policy domain="coder" rights="read|write" pattern="LABEL" />
Затем перезапустите ваш веб-сервер (nginx, apache).
Я много раз использую ImageMagic convert
команда для преобразования *.tif
файлы в *.pdf
файлы.
Я не знаю почему, но сегодня я начал получать следующую ошибку:
convert: not authorized `a.pdf' @ error/constitute.c/WriteImage/1028.
После выдачи команды:
convert a.tif a.pdf
Прочитав приведенные выше ответы, я отредактировал файл /etc/ImageMagick-6/policy.xml
и изменил строку:
policy domain="coder" rights="none" pattern="PDF"
в
policy domain="coder" rights="read|write" pattern="PDF"
и теперь все работает отлично.
У меня есть "ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28" на "Ubuntu 16.04.5 LTS".
Есть /etc/ImageMagick/policy.xml
файл, который установлен yum. Он запрещает почти все (в целях безопасности и защиты вашей системы от перегрузки вызовами ImageMagick).
Если вы получаете ReadImage
ошибка, как указано выше, вы можете изменить строку на:
<policy domain="coder" rights="read" pattern="LABEL" />
который должен решить проблему.
Файл содержит кучу документации, так что вы должны прочитать это. Например, если вам нужны дополнительные разрешения, вы можете объединить их следующим образом:
<policy domain="coder" rights="read|write" pattern="LABEL" />
... что предпочтительнее, чем удаление всех проверок прав доступа (т. е. удаление или комментирование строки).
Если кому-то нужно сделать это одной командой после установки, запустите это!
sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="read|write" pattern="PDF" \/>/g' /etc/ImageMagick-6/policy.xml
Ответ с наибольшим количеством голосов (у меня недостаточно репутации, чтобы добавить комментарий) предлагает закомментировать строку MVG, но имейте в виду следующее:
CVE-2016-3714
ImageMagick поддерживает файлы ".svg/.mvg", что означает, что злоумышленники могут создавать код на языке сценариев, например MSL (Magick Scripting Language) и MVG (Magick Vector Graphics), загружать его на сервер, замаскированный под файл изображения, и принудительно программное обеспечение для запуска вредоносных команд на стороне сервера, как описано выше. Например, добавление следующих команд в файл и загрузка его на веб-сервер, который использует уязвимую версию ImageMagick, приведет к выполнению команды "ls -la" на сервере.
exploit.jpg:
push графический контекст просмотра 0 0 640 480 pop 'url ( https://website.com/image.png"| ls" -la) "pop графический контекст
А также
Любая версия ниже 7.0.1-2 или 6.9.4-0 потенциально уязвима, и заинтересованные стороны должны как можно скорее обновить ее до последней версии ImageMagick.
После недавнего обновления в моей системе Ubuntu 16.04 я также начал получать эту ошибку при попытке запустить конвертирование файлов.ps для преобразования их в pdfs.
Это исправление сработало для меня:
В терминале запустить:
sudo gedit /etc/ImageMagick-6/policy.xml
Это должно открыть файл policy.xml в текстовом редакторе gedit. Если этого не произойдет, ваша магия изображения может быть установлена в другом месте. Тогда поменяй
rights="none"
в
rights="read | write"
для PDF, EPS и PS строк в нижней части файла. Сохраните и выйдите, и изображение снова должно сработать.
У меня была эта ошибка при попытке преобразовать PDF в JPG, и я решил ее с помощью этого метода:sudo vi /etc/ImageMagick*/policy.xml
изменение:
policy domain = "coder" rights = "none" pattern="PDF"
кому:
policy domain = "coder" rights = "читать | писать" шаблон = "PDF"
Источник: http://realtechtalk.com/ImageMagick_Convert_PDF_Not_Authorized-2217-articles
Если вам не нужно обрабатывать растровые файлы и PDF/PS/EPS с помощью одного и того же инструмента, не ослабляйте безопасность ImageMagick.
Вместо этого сохраните глубокую защиту своих веб-приложений, убедитесь, что ваш Ghostscript исправлен для всех известных -dSAFER
уязвимости, а затем вызвать его напрямую.
gs -dSAFER -r300 -sDEVICE=png16m -o document-%03d.png document.pdf
-dSAFER
отключает вас от режима совместимости с наследием "запустить Postscript будет иметь полное разрешение на взаимодействие с внешним миром как язык программирования с полным тьюрингом".-r300
устанавливает желаемый DPI на 300 (по умолчанию 72)-sDEVICE
указывает выходной формат (другие варианты см. в разделе " Устройства" в руководстве).-o
это сокращение для-dBATCH -dNOPAUSE -sOutputFile=
- В этом разделе руководства Ghostscript приведены некоторые примеры форматов для вывода имен файлов многостраничных файлов, но, для фактического определения синтаксиса, он указывает вам на документацию для C Е (3) функции.
Если вы визуализируете файлы EPS, добавьте -dEPSCrop
поэтому он не будет дополнять ваш вывод до размера страницы и использовать -sDEVICE=pngalpha
чтобы получить прозрачный фон.
Прочитав здесь несколько предложений и объединив идеи, мне потребовались следующие изменения в /etc/ImageMagick-6/policy.xml:
<policy domain="coder" rights="read|write" pattern="PDF" />
... rights = "none" не помогло. ...pattern="LABEL" не требовалось. Хотя я не работаю с большими файлами png (всего ~1 Мб), некоторые изменения в ограничениях памяти также были необходимы:
<policy domain="resource" name="memory" value="2GiB"/>
(вместо 256Mib) и
<policy domain="resource" name="area" value="2GB"/>
(вместо 128 МБ)
У меня тоже была ошибка error/constitute.c/ReadImage/453
при попытке конвертировать EPS в GIF с изображением магии. Я попробовал решение, предложенное sNICkerssss, но все еще имел ошибки (хотя и отличается от первого)e error/constitute.c/ReadImage/412
Что решило проблему было поставить read
на другие записи
<policy domain="coder" rights="read" pattern="PS" />
<policy domain="coder" rights="read" pattern="EPS" />
<policy domain="coder" rights="read" pattern="PDF" />
<policy domain="coder" rights="read" pattern="XPS" />
<policy domain="coder" rights="read|write" pattern="LABEL" />