2月

外部のデザイナーさん(HiGash.Net の中の人だけど)と仕事をしたときの話です。

私の構築したステージング用のサーバにデザイナーさんの作ったコンテンツを置いてもらう必要があったので、「sftp でいいですか?」と聞いたら「ftpの方がいい」と言われたので、急遽 ftp サーバの用意をすることになりました。

軽く「いいよ」と答えたものの、自分で最後に ftpd をたてたのはもう10年近く前のことで何も覚えてません。
Solaris なのでSMFで管理されているftpdがあるだろうと思い、試してみると

$ pfexec svcadm enable ftp
$ svcs -l ftp
fmri         svc:/network/ftp:default
name         FTP server
有効         true
状態         online
next_state   none
state_time   Tue Feb 23 02:02:15 2010
リスタータ   svc:/network/inetd:default
contract_id

無事に起動できました。簡単簡単。

念のため、ファイアウォール越しに ftp コマンドで接続テストを行い、passive mode が on でも off でも問題がなかったので、使ってもらいました。

しかし、しばらくすると「FTPサーバに接続は出来たけど、ファイルが何も表示されない」との報告が。。。

使っている ftp のクライアントソフトはFFFTPだという事なので、同じトラブルにあっている人がいるだろうと思いGoogleに聞いてみたところ、このページで原因と思われる記述を発見しました。

「タイムスタンプに含まれる日本語文字列の処理の問題」

ftpコマンドで接続して確認すると、ファイルの更新日付が確かに日本語で返ってきています。これなら in.ftpd のロケールを変えてあげれば問題は解決しそうです。

また、Googleに聞いてみるとこのページに回答がそのまま書いてありました。

SMF なので svccfg を使うのかと思ったら、in.ftpd は inetd に管理されているので、inetadmというコマンドを使うんですね。初めて知った。

以下のコマンドで、FFFTPでも正常にファイル一覧が表示されるようになりました。

$ pfexec inetadm -m ftp inherit_env=FALSE
$ pfexec svcadm restart ftp

関連するエントリ

関連書籍

Post Comment