我正在用 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。
我尝试过的事情:
- 谷歌很多
- 设置地穴=2
- 问朋友们
- 使用 SHA(也不起作用)
- 更新 htpasswd 和 vsftpd
我已经为此苦苦挣扎了一个星期了,我希望你们能进一步帮助我
htpasswd
生成 Apache 格式的 MD5 哈希,您可以通过查看它们以 开头来验证$apr1$
,但 PAM 仅支持您的平台实现实现的格式crypt(3)
。对于 Glibc,等效的(基于 MD5 的)将是$1$
. 您只需要使用不同的工具生成密码。这是一个例子:您可以将此哈希
ftpd.passwd
以格式复制到您的文件中username:hash
,它应该可以工作。扩展@bonsaiviking 的答案,您可以生成 openssl md5 密码,并使用 htpasswd 的批处理模式 -b 和纯文本 -p 选项将其一行添加到 ftpd.passwd 文件中,如下所示:
上面的示例 (Ubuntu) 还会创建一个新的 ftpd.passwd 文件(如果它不存在)使用 -c
您显示的两个命令是等效的,因为该
-d
选项告诉htpasswd使用 crypt,这是大多数操作系统的默认设置。如果你想用 md5 散列密码,那么你应该使用
-m
这表明测试的密码已使用 md5 加密。