CentOS7でyum update後vsftpdにログインできなくなった

530 Login incorrect.

CentOS7でyum update後、vsftpdにログインできなくなって、予想以上に直すのに時間がかかってしまったので、その対応メモです。

症状は、CentOS7でyum update後、vsftpdで「530 Login incorrect.」を発行してログインできないという事象です。yum update前はログインできてました。

原因は、CentOS7のパッケージ「setup」がアップグレードされたのが原因でした。

vsftpdの認証ではpamを使っております。/etc/vsftpd/vsftpd.confの中でCentOS7標準の設定で「pam_service_name=vsftpd」が指定されており、そのpamの設定は下記のとおりです。

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

上記のとおり、4行目の「pam_shells.so」で、いまFTPしようとしてユーザのシェルが「/etc/shells」に列挙してあるものに該当しているかをチェックしています。

パッケージ「setup」には、この「/etc/shells」ファイルが含まれており、旧バージョンの際は下記のようになってました。

/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

これが、新しい方のパッケージ「setup」に含まれてる「/etc/shells」ファイルでは、下記のように綺麗になっています。

/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

従って、今回、FTPできなかったのは、そのFTPユーザのシェルが上記の「/etc/shells」から漏れてしまったためでした。FTPだけ行うUNIXユーザなので「/sbin/nologin」にしてたので漏れてました。

/etc/shellsに該当のシェルを追加すれば直りました。