2007/10/02(火) [n年前の日記]
#1 Vine Linux 4.1 の ProFTPD設定でハマる
新サーバ機にftpでアップロードしたら時刻がずれてることに気づいた。なんでや。TimesGMT off は指定してるのだけど。
とりあえず、Vine Linux 4.1 + proftpd-1.2.10-0vl5.5 では、
◎ _15: ftpファイルの時刻について :
_Vine Linux errata [proftpd のバグ修正]
_No.4981 ProftpdでTimesGMTが有効にならない
_FTPサーバ(ProFTPD)の構築(SuSE9.3編)
_アップロードしたファイルのタイムスタンプのクライアントでの表示やログがGMT(9時間前)になってしまう。
_T-4の整備日誌v2: ProFTPdの時刻がずれる問題
たしかにFTPサーバのログも時間がずれていた。なんだかやっかいだな…。
proftpd サーバは、クライアントに返すファイル/ディレクトリの MDTM (更新日時) を、proftpd が動作しているマシンのローカルタイムに 準じて返しています。 (/etc/proftpd.conf で TimesGMT FALSE となっている場合) しかし、多くの FTP クライアントは、FTP サーバが返す MDTM を GMT と期待して動作しており、例えば lftp でファイルを取得すると、 サーバ上の日付より進んだ更新日時となってしまいます。アップストリームでこの件について議論が行われ、 MDTM は常に GMT で返した方が良いだろうという結果になり、 バージョン 1.3.1rc1 に修正が入りました。
_No.4981 ProftpdでTimesGMTが有効にならない
_FTPサーバ(ProFTPD)の構築(SuSE9.3編)
SuSE9.3(9.2も発生)では、localtimeを使用するように指定(TimesGMT off)していても、uploadしたファイル自体の更新時刻はlocaltimeになるが、クライアントでの表示やProFTPDのログがGMTになってしまう問題が発生する。これはchrootすると、/etc/localtimeが読めなくなることに起因するようなので対策が必要である。
_アップロードしたファイルのタイムスタンプのクライアントでの表示やログがGMT(9時間前)になってしまう。
この問題は、chrootする時に発生するが、原因はglibc-2.3のバグによるものである。
_T-4の整備日誌v2: ProFTPdの時刻がずれる問題
しかしながら、この現地時間設定ファイルはユーザディレクトリの外にあるため、アクセス出来ません。本来はアクセス出来る権限のあるプロセスが行うので問題ないのですが、glibc-2.3のバグによって出来なくなっていました。長く書きましたが、これによってログに吐き出されるアクセス時刻がGMT(世界協定時)のままログに書き出されてしまっていました。私(管理者)はFTPでアクセスしても自由にディレクトリを移動出来るようにしているので、現地時間設定ファイルにもアクセス出来、気がつきませんでした。そのためログの時系列が目茶目茶になった挙句、ログが飛んでしまっていました。
たしかにFTPサーバのログも時間がずれていた。なんだかやっかいだな…。
◎ _ITmedia エンタープライズ : Linux Tips「ProFTPDでタイムスタンプが9時間ズレてしまう」 :
少なくとも、この記事にあるような「TimesGMT off」指定はもう古いということなんだろうか。…よくわからん。
◎ _TimesGMT off と TimesGMT FALSE では動作が違っていたらしい :
proftpd の localtime がGMTになってしまうというのは検索すると/etc/proftpd.confに「TimesGMT off」と記述するように書いてある。「TimesGMT off」と記述して正常な時間を表示するようになったのだが、またおかしくなって直す方法が分からなかった。今日、vine の proftpd は正常な時間を表示するので /etc/proftpd.conf を見ると「TimesGMT FALSE」になっていた。CentOSも「TimesGMT FALSE」するとOKになった。off と FALSE が同様に扱われない状況もありうるのか…。したり顔(?)で「offもFLASEも同じですよ」とは言えなくなってるのだな。
TimesGMT off # 誤り
TimesGMT FALSE # 正しい
いつから変わったんだ?
◎ _satospo - ProFTPDのGMT問題 :
方法1 : proftpd.confでSetEnvディレクティブを用いてTZ環境変数を定義します。これだ! つーかこんな指定ができるのか。
proftpd.confで、
SetEnv TZ JST-9
とします。
とりあえず、Vine Linux 4.1 + proftpd-1.2.10-0vl5.5 では、
#TimesGMT FALSE TimesGMT off SetEnv TZ JST-9 DefaultRootの記述でなんとか。
- FFFTP で、タイムゾーンを「GMT+9:00(日本)」にしてアクセスしてる分には、日本時間でファイルのタイムスタンプが表示できてるように見える。
- ftpサーバのログも日本時間で記録されてるように見える。
この記事へのツッコミ
[ ツッコミを読む(1) | ツッコむ ]
以上です。
TimesGMT off
SetEnv TZ JST-9
DefaultRoot
で直りました。