FreeBSDのftpdのロケールに伴う巨大なバグ

ずっと前に、Filezilla、Far FTPプラグイン、Far Navigatorなどのクライアントがサーバーに接続したときにディレクトリの内容を表示できないという問題に遭遇しました。

FAR FTPプラグインは、出力を解析できないことを誓い、Filezillaは日付とファイル名を混ぜてファイルを表示し、ディレクトリを移動することを許可しません。





判明したように、ftpdは/etc/rc.d/を介してデーモンを開始または再起動したユーザーのロケールを継承し、このロケールのデータをサーバーに接続するすべてのクライアントに提供します。

LANG = ru_RU.UTF-8(ru_RU.KOI8-R)を持ち、/ etc / rc.d / ftpd restartでftpdを再起動し、通常のftpクライアント経由で接続すると、次の図が表示されます。



ftp> ls test

229 Entering Extended Passive Mode (|||64671|)

150 Opening ASCII mode data connection for '/bin/ls'.

total 212

-rw-r--r-- 1 aborche wheel 15457 23 ╟©─ 10:51 crypttest.txt

-rw-r--r-- 1 aborche wheel 193509 29 ▐Ґ╡ 2009 falling_into_a_black_hole.jpg

drwxr-xr-x 2 aborche wheel 512 27 ╟╡ 11:36 geo

drwxr-xr-x 2 aborche wheel 512 27 ╟╡ 11:36 release

drwxr-xr-x 3 aborche wheel 512 27 ╟╡ 11:36 scripts

226 Transfer complete.







したがって、受信したデータを単に解析できない他のすべての顧客に同じ曲線出力が与えられます。 そのため、ファイル名は日付に干渉するか、まったく表示されません。 突然クライアントが完全なUTF-8を使用できるようになった場合、出力は引き続きクライアントで正しく表示されますが、クライアントはファイルに対して何もできなくなります。



LANG = Cでftpdを再起動すると、すべてが正方形に戻ります。

ftp> ls test

229 Entering Extended Passive Mode (|||64395|)

150 Opening ASCII mode data connection for '/bin/ls'.

total 212

-rw-r--r-- 1 aborche wheel 15457 Apr 23 10:51 crypttest.txt

-rw-r--r-- 1 aborche wheel 193509 Jan 29 2009 falling_into_a_black_hole.jpg

drwxr-xr-x 2 aborche wheel 512 Aug 27 11:36 geo

drwxr-xr-x 2 aborche wheel 512 Aug 27 11:36 release

drwxr-xr-x 3 aborche wheel 512 Aug 27 11:36 scripts

226 Transfer complete.







問題は、スクリプトを起動してもLANG値がクリアされず、現在のユーザーから継承されることです。

サーバーをセットアップするときは、このことに留意してください。



(C) Aborche 2009








All Articles