問題
displayコマンドでpdfを確認しようとすると次のようなメッセージが出て確認できない場合があります.
display-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/421.
この問題はdisplayコマンドに限らず,Imagemagick関連のコマンドでpdfを扱うときに起こるようです.
解決法
この問題はGhostscript(postscriptを扱うソフト)の脆弱性対策のためにImagemagickがpostscriptやpdfファイルを無効化しているために起こるとのことです.次の手順で,postscriptファイル(ps, eps)とpdfファイルの無効化設定を無効化してやればpostscriptやpdfファイルがImagemagick関連のコマンドで使えるようになります.
- /etc/ImageMagick-6/policy.xmlを次のコマンドで開く.
sudo nano /etc/ImageMagick-6/policy.xml
- この部分
<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" />
を次のように変更します.
<!-- <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" /> -->
この対策方法は単純にpostscriptやpdfファイルを無効化している部分をコメントアウトしただけです.
補足
Ghostscriptの脆弱性が心配な方は,
gs --version
でGhostscriptでバージョンを確認してください.9.24以上であれば今回の問題と関係する脆弱性は修正されているとのことです.