PIでFTP専用アカウントを作ろうとしたらハマったので忘れないように記録。
# useradd -s /usr/sbin/nologin newuser
# passwd newuser
という感じでユーザーを作成するも、ftpクライアントからは何をやっても接続を拒否される。
最初は単にパスワード指定を忘れたのかと再設定しても解決せず。
どうにも理由がからぬまま、試しにシェルを特に指定しないでadduserにてユーザーを作成
(即ちデフォルトの/bin/bashが指定されてる)した所、あっさり接続に成功。このためどうもシェル指定が怪しいと調べてみると
最近のディストリビューションは/etc/shellsにはnologinを含まないのがトレンドのようでした。
/sbin/nologinに含まれていないプログラムでは自動的にログオンを拒否されるとのこと。
このため/etc/shellsを修正することとします。
/etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
次のように修正
/etc/shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/sbin/nologin #←追加
ちなみにvsftpdによるftpサーバーも同等の結果になりました。