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.

Answers:


212

好吧,我加了

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

就在此之前</policymap>/etc/ImageMagick-7/policy.xml这使得它可以再次工作,但是不确定其安全性。


3
我相信是由于Ghostscript中的一个错误而添加了PDF政策,我认为该错误现已得到修复。因此,如果您使用的是当前的Ghostscript,则可以授予该策略读写权限。
fmw42

30
我找到了这条线,<policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />并对其进行了注释,以使其正常运行。
jakob-r

8
此处引用了导致分发版本实施该策略的安全漏洞:kb.cert.org/vuls/id/332928
Jason Siefken

17
@ jakob-r:我想您
已将


98

正如一些评论中指出的那样,您需要在中编辑ImageMagick的策略/etc/ImageMagick-7/policy.xml。更具体地说,在撰写本文(05/01/2019)时在ArchLinux中,以下行未注释:

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

只需将其包装起来<!--并对其-->进行注释,然后pdf转换将再次起作用。


1
确保ghostscript是最新的kb.cert.org/vuls/id/332928
ykay说,莫妮卡

6
此功能的意义是什么?要防止用户制作PDF?
限量赎罪

6
是的,是的。由于网站经常使用ImageMagick来处理上传的文件-PDF是基本上可以包含任何可执行代码的文件格式之一-具有上传权限的任何人都可以执行您的Web用户可以访问的任何任务。如果有人诱骗您亲自将恶意PDF转换为任何其他格式,也是如此。
TwoD


25

这是由于Ghostscript 9.24()中已解决的安全漏洞造成的。如果您有较新的版本,则不再需要此解决方法。在具有Ghostscript 6的Ubuntu 19.10上,这意味着:

  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" />
    

仅在gs​​ 9.26上在Ubuntu 19.04上对我有用的修复程序。
ManuelTS

2
sed -i '/disable ghostscript format types/,+6d' /etc/ImageMagick-6/policy.xml对我来说很好。
理查德·基弗

1
适用于Ubuntu 20.04
Alex K.

21

对于我在Arch Linux上,我不得不评论:

  <policy domain="delegate" rights="none" pattern="gs" />

在我的系统上,有两个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 

0

我在nextcloud上遇到了这个问题,该问题无法为pdf文件创建缩略图。

但是,建议的步骤都无法为我解决问题。

最终,我找到了原因:可接受的答案确实起作用,但是在编辑policy.xml文件后,我还必须重新启动php-fpm:

 sudo systemctl restart php7.2-fpm.service
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.