MovableType の一時(テンポラリ)ディレクトリについて

Posted by
ぴろり
Posted at
2013/07/15 20:35
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
MovableType カテゴリ
カバーイメージ

 Movable Type ユーザーコミュニティにて、 さくらインターネットでtmpディレクトリが見えないというトピックが立っていました。トピ主の問題は解決したようですが、自分なりに調べてみたことの覚書き。

このエントリーをはてなブックマークに追加  

 MovableType の管理画面からのファイル アップロードやバックアップ時に、mt-config.cgiTempDir で指定されたディレクトリ内に一時ファイル(テンポラリ ファイル;Temporary File)が作成されます。Linux や UN*X サーバ上にインストールされた MovableType であれば、TempDir の明示がない場合、標準で /tmp が利用されます。一般に /tmp ディレクトリは、一時的な用途に誰でも読み書きできるように開放されていることが多いですが、複数人数で共有するようなレンタル サーバ環境の場合にはセキュリティ上の懸念があります。

 例えば、私が利用しているさくらインターネット レンタル サーバスタンダード プランでは、シェル ログインして以下のように /tmp ディレクトリの中を見ることができます。

% ll /tmp
lrwxr-xr-x  1 root  wheel  8 Feb 22  2012 /tmp -> /var/tmp
% ll /var/tmp
total 294
drwxrwxrwt  2 root          wheel    512 Feb 23  2012 .ICE-unix
drwxrwxrwt  2 root          wheel    512 Feb 23  2012 .X11-unix
drwxrwxrwt  2 root          wheel    512 Feb 23  2012 .XIM-unix
drwxrwxrwt  2 root          wheel    512 Feb 23  2012 .font-unix
-rw-r--r--  1 xxxxxxxxx     wheel  16384 Jul 15 16:38 mt-throttle.db
-rw-r--r--  1 root          wheel   1396 Jul 14 04:41 packlist.167519
-rw-r--r--  1 root          wheel    196 Jul 14 04:41 packlist.366618
-rw-r--r--  1 root          wheel   1396 Jul 15 04:19 packlist.420442
-rw-r--r--  1 root          wheel    196 Jul 15 04:19 packlist.880037
-rw-------  1 xxxx          wheel     23 Jul 15 10:25 sess_0124df5272169766dd5a7022a16158c0
-rw-------  1 xxxxxxxxxxxx  wheel      0 Jul 15 17:43 sess_01edcdaa17563be363e3c0ffdfe4d401
-rw-------  1 xxxxxx        wheel     65 Jul 13 08:12 sess_05a48a60d06af7ef48fa296841e20dc0
-rw-------  1 xxxxxxxxxxxx  wheel      0 Jul 15 17:17 sess_05f45f8f030eeed36baf2dff57c80e6a
-rw-------  1 xxxxxxxxxxxx  wheel      0 Jul 15 17:42 sess_072c1d89ac2ee9ef5010b042289f5a8e
-rw-------  1 xxxxxx        wheel     65 Jul 12 17:30 sess_07557341e1bdd590e0b82db04bd9b3bc
-rw-------  1 xxxxxxxxxxxx  wheel      0 Jul 15 17:30 sess_078df4b97397c08262feece34686cc63
-rw-------  1 xxxx          wheel     23 Jul 15 07:44 sess_08173da5cb6d4ea81ef1f31a0fb7d1cc
-rw-------  1 xxxxxxxxxxxx  wheel      0 Jul 15 17:49 sess_0adf9d33702bcee7515bd8432d5c2884
-rw-------  1 xxxxxxxxxxxx  wheel      0 Jul 15 17:36 sess_0c83b467d98f1a55ed070d5c38957b6b
...(続く)...

 ここで注目すべきは、mt-throttle.db というファイルが 0644 権限で存在するということです。これは MovableType の検索 CGI (MT::App::Search::Legacy) が生成する連続実行防止(throttle)用のファイルで、中を覗いてみてもファイル内容そのものに大きな秘密はありません。しかし、MovableType がデータを処理する際に、その内容が一時的に誰でも見られる /tmp に置かれると問題になることがあります*1。そこで、当方で幾つか一時ファイルを使うような動作を試してみたところ、以下のようになりました。

アセットのアップロード(新規)
 アップロード中のファイルが CGITemp(任意数字) というファイル名で生成されます。0600 権限なので、中を見られることはないし、ファイル名も判りませんが、ファイル サイズだけは知られてしまいます。
アセットのアップロード(上書き)
アップロードされたファイルが任意文字列のファイル名で生成されます。0600 権限なので、中を見られることはないし、ファイル名も判りませんが、ファイル サイズだけは知られてしまいます。
バックアップ
バックアップ中のデータが Movable_Type-(日付)-Backup-1.xml というファイル名で生成され、0644 権限なので、中を見られると問題かもしれません。また、tar.gz 圧縮オプションを有効にしていた場合、続けて tgz.(任意文字列) というファイルが生成され、これまた 0644 権限。

 一言に MovableType が一時ファイルを使用する際に、コードで直接に一時ファイルを操作している場合、File::Temp モジュールを利用して一時ファイルを操作している場合、また他の Perl モジュールを使用している場合で、それぞれ生成される一時ファイルの権限がバラバラのようです。また、インストールされているプラグインが生成する一時ファイルについても疑い始めると(´・ω・`) 自分のサーバでは上記のような結果でしたが、もしかしたらサーバ環境によっても異なってくるかもしれません。
 とりあえず、レンタルサーバなどで一時ディレクトリを共用されている方は、TempDir ディレクティブを自分のホーム ディレクトリ以下に明示した方が安全なようです。以上。

% cd ← ホーム ディレクトリに移動
% mkdir tmp ← 一時ディレクトリを作成
% vi your/mt/path/mt-config.cgi ← 環境設定ファイルを編集
...
TempDir /home/magicvox/tmp ← ホーム ディレクトリに作成した tmp ディレクトリを指定する
...
このエントリーをはてなブックマークに追加  

  1. *1 機密情報に神経質なサイトが、果たして共用レンタルサーバを使うのか、という疑問は置いておいて。逆に言えば、機密情報を心配するならば少なくとも専用サーバを使いなさい、ということですね。

更新履歴

Updated at
2013/07/17 15:46
更新メモ
r8 <ul>を<dl>に変更

関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。