web-dev-qa-db-ja.com

vsftpdはMD5で暗号化されたパスワードを受け入れません

仮想ユーザーが自分のスペースにアクセスできるようにvsftpdでサーバーを設定しています。現在は完全に機能していますが、CRYPTパスワードでのみ機能します。そう

Sudo htpasswd -c /etc/vsftpd/ftpd.passwd phpmyadmin

ログインできませんが、

Sudo htpasswd -c -d /etc/vsftpd/ftpd.passwd phpmyadmin

意志。

/etc/vsftpd.conf

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/var/www/vhosts/$USER.universe.local
chroot_local_user=YES
hide_ids=YES
guest_username=vsftpd

/etc/pam.d/vsftpd

auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd crypt=2
account required pam_permit.so crypt=2

ソースとPHPからApache2.4.3をインストールしました。

私が試したこと:

  • グーグルたくさん
  • Crypt = 2を設定
  • 友人に尋ねる
  • SHA(どちらも機能しません)を使用します)
  • htpasswdとvsftpdを更新

私はこれに1週間も苦労してきました。

10
Marco

htpasswdは、Apache形式でMD5ハッシュを生成します。これは、それらが_$apr1$_で始まることを確認することで確認できますが、PAMは、プラットフォームのcrypt(3)の実装が実装する形式のみをサポートします。 Glibcの場合、同等の(MD5ベース)は_$1$_になります。別のツールでパスワードを生成する必要があるだけです。次に例を示します。

_sh$ openssl passwd -1
Password: 
Verifying - Password: 
$1$vhzHvIYn$2Ro.R0WdLnxrWjHcs5RbA/
_

このハッシュを_ftpd.passwd_形式で_username:hash_ファイルにコピーすると、正常に機能するはずです。

13
bonsaiviking

@bonsaivikingの回答を拡張すると、openssl md5パスワードを生成し、htpasswdのバッチモード-bおよびプレーンテキスト-pオプションを次のように使用して、ftpd.passwdファイルに1行で追加できます。

htpasswd -c -p -b ftpd.passwd *username* $(openssl passwd -1 -noverify *password*)

上記の例(Ubuntu)では、-cを使用して存在しない場合、新しいftpd.passwdファイルも作成されます。

6
jnolan517

表示する2つのコマンドは同等です。これは、-dオプションが htpasswd に、ほとんどのオペレーティングシステムのデフォルトであるcryptを使用するように指示するためです。

Md5でハッシュされたパスワードが必要な場合は、-mを使用する必要があります

Sudo htpasswd -m /etc/vsftpd/vsftpd.passwd test
New password:
Re-type new password:
Adding password for user test
grep test /etc/vsftpd/vsftpd.passwd
test:$apr1$GTYtpKS1$Jyfgu42kDspxdJTPPzSOY.

これは、テストのパスワードがmd5を使用して暗号化されていることを示しています。

1
user9517