Конвертировать: не авторизовано `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)

  1. строка комментария

    <!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
    
  2. изменить линию

    <policy domain="coder" rights="none" pattern="PDF" />
    

    в

    <policy domain="coder" rights="read|write" pattern="PDF" />
    
  3. добавить строку

    <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

Просто удалите файл /etc/ImageMagick/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" />
Другие вопросы по тегам