我正在用vsftpd设置一个服务器,让虚拟用户访问他们的空间。 现在它完全正常工作,但只有CRYPT密码。 所以
sudo htpasswd -c /etc/vsftpd/ftpd.passwd phpmyadmin
不会让我login,但是
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
我从源代码安装apache2.4.3以及PHP。
我试过的东西:
我一直在为此苦苦挣扎了一周,希望你们能进一步帮助我
htpasswd
以Apache格式生成MD5哈希值,您可以通过查看它们以$apr1$
开头来validation,但PAM只支持您的平台的crypt(3)
实现所实现的格式。 对于Glibc,相当于(基于MD5的)将是$1$
。 你只需要用不同的工具生成密码。 这是一个例子:
sh$ openssl passwd -1 Password: Verifying - Password: $1$vhzHvIYn$2Ro.R0WdLnxrWjHcs5RbA/
你可以把这个散列值复制到你的ftpd.passwd
文件中, username:hash
格式,它应该可以工作。
在@ bonsaiviking的答案上进行扩展,您可以使用htpasswd的批处理模式-b和plaintext -p选项生成openssl md5密码,并将其添加到ftpd.passwd文件中,如下所示:
htpasswd -c -p -b ftpd.passwd *username* $(openssl passwd -1 -noverify *password*)
上面的例子(Ubuntu)也创build了一个新的ftpd.passwd文件,如果它不存在使用-c
您显示的两个命令是相同的,因为-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.
其中显示testing的密码已经使用md5encryption。