ImageMagick和ghostscript的“委托”安全策略阻止转换

11
这似乎与我的上一个问题有关,那里有一个ghostscript bug,因此ImageMagick开发人员制定了一个安全策略来阻止PDF转换。通过调整策略文件,将权限从“none”(默认)更改为“read | write”,解决了这个问题。
当运行类似以下形式的命令时,我遇到了类似的问题:
convert input.pdf output.jpg

现在使用ghostscript 9.27版本(2019-04-04)和imagemagick 7.0.8-56 Q16 x86_64版本(2019-07-21)(我认为这是每个软件的最新版本),我遇到了这个错误

convert: attempt to perform an operation not allowed by the security policy `gs' @ error/delegate.c/ExternalDelegateCommand/378.
convert: no images defined `output.jpg' @ error/convert.c/ConvertImageCommand/3273.

所以我通过sudo编辑/etc/ImageMagick-7/policy.xml,使得在<policymap>中唯一没有注释的行被更改为

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

to

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

但问题仍然存在。如果简单地注释或删除上述行,则会得到相同的结果。这在我的多台Arch机器上都可以重现。
有没有办法绕过这个安全策略默认值?这样做是否安全?

请参考以下链接:https://dev59.com/pVQJ5IYBdhLWcg3w5aIc#52863413 - fmw42
2个回答

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

需要将其注释掉。这已经在Arch Wiki的imagemagick页面上进行了说明。该页面目前引用了以下错误报告:FS#59778FS#62171

由于某些原因,这对我来说并没有立即起作用。但今天我想办法让它工作了,方法是将policy.xml移动到备份中(删除),运行convert命令,然后将原始文件移回,并注释掉上面的那一行。


1
你还需要将rights="none"更改为read|write。请参见我在原帖下方的评论中提供的链接。 - fmw42
我刚刚尝试了当前的Arch Linux,但这并没有解决我的问题。我仍然会收到“convert: attempt to perform an operation not allowed by the security policy `gs'...” 的错误信息。有没有关于如何在Arch / Manjaro上正确设置convert、ImageMagick和gs的最新文档? - moin moin

0

我遇到了以下问题之一:convert: no images defined 'output.jpg' @ error/convert.c/ConvertImageCommand/3273.

在我的系统上,这个命令解决了问题:brew install ghostscript。(通过如何使用homebrew安装imagemagick?

我正在使用通过homebrew安装的OSX上的ImageMagick。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接