外部のデザイナーさん(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