Movable Type ユーザーコミュニティにて、 さくらインターネットでtmpディレクトリが見えないというトピックが立っていました。トピ主の問題は解決したようですが、自分なりに調べてみたことの覚書き。
MovableType の管理画面からのファイル アップロードやバックアップ時に、mt-config.cgi の TempDir
で指定されたディレクトリ内に一時ファイル(テンポラリ ファイル;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。そこで、当方で幾つか一時ファイルを使うような動作を試してみたところ、以下のようになりました。
0600
権限なので、中を見られることはないし、ファイル名も判りませんが、ファイル サイズだけは知られてしまいます。0600
権限なので、中を見られることはないし、ファイル名も判りませんが、ファイル サイズだけは知られてしまいます。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 ディレクトリを指定する ...