Ryosuke IMAI | yoma_k

Personal website

TeX の脆弱性対策で texmf.cnf を書き換える

Posted at — Dec 9, 2016
Tweet

 TeX 環境にセキュリティホールが発見されて話題になっている。

TeX Live や W32TeX では既に対策がとられているため、使用している場合はアップデートするのがよい。  ただし Ubuntu のパッケージマネージャーを用いて TeX Live をインストールしている場合には問題がある。apt でインストールされる TeX Live は本家 TeX Live の更新に追いついていない(12月9日現在)。この場合であっても tlmgr は存在しているためアップデートは不可能ではないが、パッケージ管理下のファイル群を書き換えさせるのはできれば避けておきたい。  Ubuntu リポジトリの TeX Live のバージョンが上がることは考えにくいし、本家版 TeX Live をインストールするのも億劫だ。(まるごとパッケージマネージャーにお任せする利点が色々有る)

texmf.cnf を書き換える (Ubuntu 16.04)

 私はアップデートを諦めて、texmf.cnf を書き換える方法で対処した。  どうやら、kpsewhich -var-value=shell_escape_commands の出力に mpost, pmpost, upmpost が含まれていたら、それらを除いたリスト(csv)をtexmf.d に記載すればよいとのこと。  (他の環境ではわからないが手元のUbuntu 16.04の場合)texmf.cnf に書き加えたい場合は、 /etc/tex/texmf.d/ 以下に設定ファイルを作り、update-texmf で反映させるのが正当なやり方らしい。  texmf.cnf に書き加えるワンライナーを作成した。下のものを端末で実行すればよい。

  sudo sh -c "echo shell_escape_commands = `kpsewhich -var-value=shell_escape_commands | tr ',' '\n' | grep -v 'mpost' | sed '/^$/d' | tr '\n' ','` > /etc/texmf/texmf.d/99sh_esc.cnf && update-texmf"

 うまくいったかどうかを確認するには、 kpsewhich -var-value=shell_escape_commands を実行して、出力から *mpost がなくなっているのをみればよい。  また、上記のワンライナーでやったことを取り消すには、

  sudo sh -c "rm /etc/texmf/texmf.d/99sh_esc.cnf && update-texmf"

を実行すればよい。