ホームサーバーでvsftpdのセットアップを行いました。認証エラーが発生したため、このフォーラムを検索して解決策を得ました。 このソリューションは私のために働いた
ソリューションのように。デフォルト設定
pam_service_name=vsftpd
動作せず、FTPサーバーでログインできません。
そして、私はそれをに変更した後
pam_service_name=ftp
動作し、ローカルユーザーとしてFTPサーバーにログインできます。この背後にある理由は何ですか?デフォルトが機能しないのはなぜですか?私はLinuxを学んでいるので、あなたの良い説明は私を大いに助けます
pam_service_name=vsftpd
で同じ認証エラーに直面しました。
オンラインでのアドバイスに従って、pam_service_name=ftp
を設定することで問題が解決した理由がわからなかったため、これをpam_service_name=foobar
に設定してテストし、問題も解決しました!
免責事項:私もLinuxを初めて使用します_pam_service_name=ftp
を設定する一般に受け入れられているアドバイスは間違っていると思います。
pam_service_name=vsftpd
は既存の構成ファイル/etc/pam.d/vsftpd
を選択しますが、pam_service_name=ftp
は存在しない/etc/pam.d/ftp
を探します(少なくとも私のシステムではUbuntu 14.04.2 LTS)。これは、ファイルが見つからないと文句を言うことなく、実際にPAM認証をバイパスしていると思われます。
有効なPAM構成を使用しないと、安全性が低下する場合があります。
最終的な解決策
最終的にpam_service_name=vsftpd
を保持し、ユーザーのシェルが/etc/shells
ファイルに存在することを確認しました。 http://www.cyberciti.biz/tips/howto-linux-Shell-restricting-access.html
/etc/pam.d/vsftd
を見て
# Standard behaviour for ftpd(8).
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.
# Standard pam includes
@include common-account
@include common-session
@include common-auth
auth required pam_shells.so
私の問題は、auth required pam_shells.so
ステップで失敗することでした。すべてのFTPユーザーに/usr/sbin/nologin
ファイルに存在しなかった/etc/shells
シェルを使用させました(ubuntu以外では、これは/sbin/nologin
である可能性があります)。よくわからない場合は、auth required pam_shells.so
をコメントアウトして、pam_service_name=vsftpd
のときにこれが原因かどうかを確認してください。
注:さらに読むと、代わりに仮想ユーザーを作成する方がクリーンであることが示唆されていますが、これには異なるvsftpdおよびPAM構成が必要です- http://www.sigerr.org/linux/setup-vsftpd-custom-multiple-directories-users- accounts-ubuntu-step-by-step / 。
/etc/pam.d/vsftpdで指定できます
auth required pam_nologin.so
したがって、/ usr/sbin/nologinを介してログインが無効になっているユーザーは、ftpを使用してのみシステムにログインできます。
注:nologinを/ etc/shellsに追加すると、 Serverfault でセキュリティ上の脅威になる可能性があることを読みました。
私にとっての問題は、WindowsマシンでPAM構成(/etc/pam.d/vsftpd
)を作成し、その結果\r\n
行末になることでした。
行末をLinuxスタイル(\n
のみ)に変換すると、PAM構成が機能し始めました。
また、最初にPAMサービス名が間違っていると思い、pam_service_name=ftp
の代わりにpam_service_name=vsftpd
を試しましたが、それはまったく役に立ちませんでした。これは、Josef Pの評価に同意します。行く方法。