2016-11

(2016-1126)

Linux Mint で ftp サーバー

いやもう大ハマリというか、

グチを聞いてくださいな。

vsftpd

ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:s-sugi): s-sugi
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.

なぜだと思って /var/log/vsftpd.log を見ると

Sat Nov 26 15:44:04 2016 [pid 18104] CONNECT: Client "127.0.0.1"
Sat Nov 26 15:44:13 2016 [pid 18102] [s-sugi] FAIL LOGIN: Client "127.0.0.1"

パスワード、合ってる筈なのに入れない、、、という事で、苦闘の末に「もう私は腕が落ちた」と落ち込んで断念。

Pure-FTPd

次に Pure-FTPd を試す。Linux Mint の「ソフトウェアの管理」からインストールすると、vsftpd 関連のパッケージの削除もやってくれる。簡単でいいですね、、、パッケージの管理は

ftp localhost
Connected to localhost.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 19:16. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (localhost:s-sugi): s-sugi
331 User s-sugi OK. Password required
Password:
530 Login authentication failed
Login failed.

なぜだと思って /var/log/pure-ftpd/transfer.log を見ると、何と何も転送されていないので、ログのサイズもゼロ。そして、エラーログ等は無いのであった。

パスワード、合ってる筈なのに入れない、、、という事で、「もう私は腕が相当に落ちた」と落ち込んで断念。

ProFDPd

最後に ProFDPd を試す。「ソフトウェアの管理」からインストールすると、pure-ftpd 関連のパッケージの削除もやってくれる。(以下同文)

ftp 192.168.10.27
Connected to 192.168.10.27.
220 ProFTPD 1.3.5a Server (Debian) [::ffff:192.168.10.27]
Name (192.168.10.27:s-sugi): s-sugi
331 s-sugi のパスワードを入力しください
Password:
530 間違ったログインです
Login failed.
Remote system type is UNIX.
Using binary mode to transfer files.

なぜだ、なぜなんだと思って /var/log/proftpd/proftpd.log を見ると

2016-11-26 19:38:37,948 DellMint proftpd[22572] DellMint (192.168.10.27[192.168.10.27]): USER s-sugi (Login failed): Invalid shell: '/bin/csh'

「これかぁ!」と思い # vi /etc/shells して、 /bin/csh を追加。そして

ftp 192.168.10.27
Connected to 192.168.10.27.
220 ProFTPD 1.3.5a Server (Debian) [::ffff:192.168.10.27]
Name (192.168.10.27:s-sugi): s-sugi
331 s-sugi のパスワードを入力しください
Password:
230 s-sugi がログインしました

やっと入れた…でも、ガックリだな。Linux Mint の csh は、実態は tcsh で、 /etc/shells には /bin/tcsh はちゃんと書かれている。それでも、明示的に /bin/csh と1行追加しないと、ftp でログインできない。今、見てみたら、 /bin/csh は symbolic link to /etc/alternatives/csh で、これがさらに /bin/tcsh にシンボリックリンクだと・・・よって「同じものだ」と認識できないんですね。FreeBSD の感覚だと、Linux Mint はアホかと思いますね、、、 FreeBSD の場合、/bin/csh と /bin/tcsh は、ハードリンクされていて完全に同一。ていうか、そもそも FreeBSD だったら、ftpd は「インストールしないと動かないサーバー」ではなく、元から NetBSD 由来の lukemftpd が入っていて、設定さえすれば動くのが当たり前という感覚だったから、インストールしないといけない、というかインストールしても動かなくて悪戦苦闘って、楽しくないですね。しかも、デバッグに役立つメッセージもロクに出さないサーバープログラムって理解に苦しみます。これじゃまるで Windows のプログラムみたい。ProFTPD は、ログが vsftpd に比べて詳しいので助かった。Pure-FTPd は…エラーログを残さないって凄い。ProFTPD は、名前の通り以前は商用版、あるいは、商用のバージョンもあったかと思いましたが、今では GPL のようです。メッセージが日本語なのが気持ち悪いですが。

やれやれ、やっとこれで「Linux Mint で ftp サーバーも設定できない」情けない状態から脱出できたが…FreeBSD では「動いて当たり前」だったから…文化が違いますね。/etc/passwd に、FreeBSD 時代のように /bin/csh ではなく、明示的に /bin/tcsh とでも書いておけば回避できたのかな。