Политика безопасности ImageMagick 'PDF' блокирует конвертацию

176

Кажется, политика безопасности Imagemagick не позволяет мне выполнять это преобразование из pdf в png. Преобразование других расширений, кажется, работает, но не из PDF. Я не менял никаких настроек imagemagick с тех пор, как установил его ... Я использую Arch Linux, если ОС имеет значение.

user@machine $ convert -density 300 -depth 8 -quality 90 input.pdf output.png
convert: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.
convert: no images defined `output.png' @ error/convert.c/ConvertImageCommand/3288.
Т. Зак Кроуфорд
источник

Ответы:

214

Ну я добавил

  <policy domain="coder" rights="read | write" pattern="PDF" />

как раз перед тем </policymap>в /etc/ImageMagick-7/policy.xmlи что делает его работу еще раз, но не уверен , что о последствиях безопасности этого.

Стефан Зайдель
источник
3
Я считаю, что политика PDF была добавлена ​​из-за ошибки в Ghostscript, которая, по моему мнению, теперь исправлена. Так что, если вы используете текущий Ghostscript, тогда у вас должно получиться предоставить эту политику правам на чтение и запись.
fmw42
31
Я нашел строку <policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />и просто раскомментировал ее, чтобы она заработала.
Якоб-р
8
Уязвимость в системе безопасности, которая привела к тому, что дистрибутивы реализуют политику, упоминается здесь: kb.cert.org/vuls/id/332928
Джейсон Сифкен,
17
@ jakob-r: Полагаю, вы это закомментировали ... ;-)
AstroFloyd
1
Убедитесь, что ghostscript обновлен kb.cert.org/vuls/id/332928
ykay говорит восстановить Monica
99

Как указано в некоторых комментариях, вам нужно отредактировать политики ImageMagick в /etc/ImageMagick-7/policy.xml. В частности, в ArchLinux на момент написания (01/01/2019) следующая строка не закомментирована:

<policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />

Просто оберните это между <!--и -->прокомментируйте это, и преобразование PDF должно работать снова.

Michele
источник
1
убедитесь, что ghostscript обновлен kb.cert.org/vuls/id/332928
ykay говорит восстановить Monica
6
Какой смысл этой функциональности? Чтобы пользователи не могли создавать PDF-файлы?
Ограниченное искупление
6
Частично да. Поскольку ImageMagick часто используется веб-сайтами для обработки загруженных файлов - а PDF относится к одному из форматов файлов, который может в основном содержать любой исполняемый код - любой, у кого есть разрешения на загрузку, может выполнить любую задачу, к которой имеет доступ ваш веб-пользователь. То же самое, если кто-то обманывает вас и переводит вредоносный PDF-файл в любой другой формат.
Два
28

Для меня в моей системе archlinux строка уже была без комментариев. Мне пришлось заменить «нет» на «читать | написать», чтобы это работало.

бабочка
источник
убедитесь, что ghostscript обновлен kb.cert.org/vuls/id/332928
ykay говорит восстановить Monica
тем же. Я в курсе, кстати.
Юкашима Хуксей
26

Это связано с уязвимостью безопасности, которая была устранена в Ghostscript 9.24 ( источник ). Если у вас более новая версия, вам больше не нужен этот обходной путь. На Ubuntu 19.10 с Ghostscript 6 это означает:

  1. Убедитесь, что у вас Ghostscript ≥9.24:

    gs --version
    
  2. Если да, просто удалите весь следующий раздел из /etc/ImageMagick-6/policy.xml:

    <!-- disable ghostscript format types -->
    <policy domain="coder" rights="none" pattern="PS" />
    <policy domain="coder" rights="none" pattern="PS2" />
    <policy domain="coder" rights="none" pattern="PS3" />
    <policy domain="coder" rights="none" pattern="EPS" />
    <policy domain="coder" rights="none" pattern="PDF" />
    <policy domain="coder" rights="none" pattern="XPS" />
    
tanius
источник
Единственное исправление, которое работало для меня на Ubuntu 19.04 с GS 9.26.
ManuelTS
3
sed -i '/disable ghostscript format types/,+6d' /etc/ImageMagick-6/policy.xmlработал нормально для меня.
Ричард Кифер
1
Работал на Ubuntu 20.04
Алекс К.
21

для меня на Arch Linux я должен был прокомментировать:

  <policy domain="delegate" rights="none" pattern="gs" />
soloturn
источник
В моей системе было два файла policy.xml: /etc/ImageMagick-6/policy.xmlи /etc/ImageMagick-7/policy.xml. Позаботьтесь, чтобы отредактировать правильный!
SylvainB
4

В Ubuntu 19.10 я сделал это в /etc/ImageMagick-6/policy.xml

раскомментируйте это

<policy domain="module" rights="read | write" pattern="{PS,PDF,XPS}" />

и прокомментируй это

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

После этого эта команда работает без ошибок

convert -thumbnail x300 -background white -alpha remove sample.pdf sample.png 
slc66
источник
0

Я столкнулся с этой проблемой с nextcloud, который не смог создать эскизы для файлов PDF.

Однако ни один из предложенных шагов не решил бы проблему для меня.

В конце концов я нашел причину: принятый ответ сработал, но мне пришлось также перезапустить php-fpm после редактирования файла policy.xml:

 sudo systemctl restart php7.2-fpm.service
derwiwie
источник