Imagemagick convert:not authorized`aaaa`@error/compose.c/ReadImage/453

Imagemagick convert:not authorized`aaaa`@error/compose.c/ReadImage/453,imagemagick,imagemagick-convert,Imagemagick,Imagemagick Convert,我想使用ImageMagick中的convert创建验证码图片 我明白了,但有一些问题 我的linux shell中的输入: convert -background white -fill black -font FreeSerif-Bold -pointsize 36 label:'adfgh' ./test.png 错误是: 转换:未授权adfgh@error/compose.c/ReadImage/453。 转换:缺少图像文件名/test.png@ 错误/convert.c/Conver

我想使用ImageMagick中的
convert
创建验证码图片

我明白了,但有一些问题

我的linux shell中的输入:

convert -background white -fill black -font FreeSerif-Bold -pointsize 36 label:'adfgh' ./test.png
错误是:

转换:未授权
adfgh
@error/compose.c/ReadImage/453。 转换:缺少图像文件名
/test.png
@ 错误/convert.c/ConvertImageCommand/3015

My ImageMagick:Version:6.7.2-7,我使用
yum安装ImageMagick
安装它

我不懂。有什么建议吗

注意:此解决方案和任何其他“编辑policy.xml”解决方案禁用了针对ImageMagick中任意代码执行漏洞的安全措施。如果需要处理非100%控制的输入,则应使用不同的程序(非ImageMagick)。

如果您仍然在这里,您将尝试编辑您完全可以控制、知道是安全的并且用户无法编辑的图像


有一个由yum安装的
/etc/ImageMagick/policy.xml
文件。它几乎禁止一切(为了安全和保护您的系统不被ImageMagick调用过载)

如果出现如上所述的
ReadImage
错误,可以将该行更改为:

<policy domain="coder" rights="read" pattern="LABEL" />

这应该可以解决问题

该文件中包含大量文档,因此您应该阅读这些文档。例如,如果您需要更多权限,可以将其组合为:

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

…这比删除所有权限检查(即删除或注释行)更可取

注意:此答案和其他答案中的解决方案包括禁用用于修复任意代码执行漏洞的安全措施。例如,请参阅和公告。只有当
convert
的输入来自可靠来源时,才能继续使用这些解决方案。

我在php(v.7.1)中使用ImageMagick将PDF文件切片为图像

首先,我得到了如下错误:

异常类型:ImagickException

异常消息:未授权…@错误/c.c/ReadImage/412


/etc/ImageMagick-6/policy.xml中进行一些更改后,我开始出现如下错误:

异常类型:ImagickException

异常消息:无法创建临时文件。。。。。权限被拒绝@error/pdf.c/ReadPDFImage/465

我的解决方案


文件
/etc/ImageMagick-6/policy.xml
(或
/etc/ImageMagick/policy.xml

  • 评论行

    
    
  • 换乘线路

    
    

    
    
  • 添加行

    
    

  • 然后重新启动您的web服务器(nginx,apache)。

    在尝试使用image magick将eps转换为gif时,我也遇到了错误
    error/compose.c/ReadImage/453
    。我尝试了Snickersss提出的解决方案,但仍然有错误(尽管与第一个不同)e
    error/compose.c/ReadImage/412
    解决这个问题的方法是将
    读取
    放到其他条目中

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

    得票最高的答案(我没有足够的声誉在这里添加评论)建议注释掉MVG行,但要记住:

    CVE-2016-3714

    ImageMagick支持“.svg/.mvg”文件,这意味着攻击者可以 用脚本语言编写代码,例如MSL(Magick脚本 语言)和MVG(Magick矢量图形),将其上载到服务器 伪装成图像文件并强制软件运行恶意 服务器端的命令,如上所述。例如,添加 在文件中执行以下命令并将其上载到使用 易受攻击的ImageMagick版本将导致运行该命令 服务器上的“ls-la”

    exploit.jpg:

    推送图形上下文视口0 0 640 480填充 “url”(“ls”-la)”流行图形上下文

    低于7.0.1-2或6.9.4-0的任何版本都可能存在漏洞,并且 受影响方应尽快升级至最新版本 ImageMagick版本


    我多次使用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" 
    

    现在一切都很好

    我有“ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28”
    在“Ubuntu16.04.5 LTS”上,

    在我的Ubuntu16.04系统最近更新后,我在尝试运行.ps文件转换以将其转换为PDF文件时也开始出现此错误

    此修复对我有效:

    在终端运行中:

    sudo gedit /etc/ImageMagick-6/policy.xml
    
    这将在gedit文本编辑器中打开policy.xml文件。否则,您的image magick可能会安装在其他位置。 然后改变

    rights="none" 
    


    对于文件底部附近的PDF、EPS和PS行。保存并退出,然后图像magick将再次工作

    如果有人需要在安装后用一个命令完成,请运行此命令

    sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="read|write" pattern="PDF" \/>/g' /etc/ImageMagick-6/policy.xml
    

    sed-i's///g'/etc/ImageMagick-6/policy.xml
    
    只需删除
    /etc/ImageMagick/policy.xml
    文件即可。例如

    rm /etc/<ImageMagick_PATH>/policy.xml
    

    在阅读了这里的几条建议并结合了这些想法之后,对于我来说,/etc/ImageMagick-6/policy.xml中的以下更改是必要的:

    <policy domain="coder" rights="read|write" pattern="PDF" />
    
    <policy domain="resource" name="memory" value="2GiB"/>
    
    
    
    。。。rights=“none”没有帮助。。。pattern=“LABEL”不是必需的。 虽然我不处理大的png文件(只有~1MB),但内存限制也需要进行一些更改:

    <policy domain="coder" rights="read|write" pattern="PDF" />
    
    <policy domain="resource" name="memory" value="2GiB"/>
    
    
    
    (而不是256MB),以及

    
    

    (而不是128 MB)

    我在尝试将pdf转换为jpg时遇到此错误,并使用以下方法解决了此问题: sudo vi/etc/ImageMagick*/policy.xml

    更改:

    策略域=“代码”
    <policy domain="resource" name="memory" value="2GiB"/>
    
    <policy domain="resource" name="area" value="2GB"/>