ImageMagick ghostscript 'delegate' 安全策略阻止转换
Posted
技术标签:
【中文标题】ImageMagick ghostscript \'delegate\' 安全策略阻止转换【英文标题】:ImageMagick ghostscript 'delegate' security policy blocking conversionImageMagick ghostscript 'delegate' 安全策略阻止转换 【发布时间】:2019-12-04 02:40:27 【问题描述】:这似乎与 my previous question 相关,其中有一个 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.
所以我已经 sudoedited /etc/ImageMagick-7/policy.xml
以便 <policymap>
中唯一未注释的行更改为
<policy domain="delegate" rights="none" pattern="gs" />
到
<policy domain="coder" rights="read | write" pattern="PDF" />
<policy domain="delegate" rights="read | write" pattern="gs" />
但问题仍然存在。如果只是注释掉或删除上述行,则结果相同。这可以在我的不止一台 Arch 机器上重现。
有没有办法绕过这个默认的安全策略?这样做安全吗?
【问题讨论】:
见***.com/questions/52861946/… 【参考方案1】:<policy domain="delegate" rights="none" pattern="gs" />
需要被注释掉。现在在arch wiki 的 imagemagick 页面上注明了这一点。该页面当前引用了这些错误报告:FS#59778、FS#62171
出于某种原因,这并没有立即对我有用。不知何故,我今天通过将 policy.xml 移动到备份(删除)、运行转换命令并将上面注释掉的行移回原始文件来让它工作。
【讨论】:
您还必须更改 rights="none" 才能读|写。在原始帖子下方的评论中查看我的链接。 我刚刚尝试使用当前的 arch linux,但这并不能解决问题(对我而言)。我仍然收到“转换:尝试执行安全策略 `gs' 不允许的操作......”有关如何在 arch / manjaro 上正确设置 convert & ImageMagick & gs 的任何当前文档?【参考方案2】:我只遇到了以下问题之一:convert: no images defined 'output.jpg' @ error/convert.c/ConvertImageCommand/3273.
在我的系统上,这修复了它:brew install ghostscript
。 (通过How do I install imagemagick with homebrew?)
我在 OSX 上使用 ImageMagick,通过自制软件安装。
【讨论】:
以上是关于ImageMagick ghostscript 'delegate' 安全策略阻止转换的主要内容,如果未能解决你的问题,请参考以下文章
将 ImageMagick 和 GhostScript 与 nuget 一起使用
ImageMagick PDF 委托失败,GhostScript 丢失
奇怪的问题——PHP / ImageMagick / Ghostscript
通过 ImageMagick 或 GhostScript 命令行旋转 .EPS 文件