Estou configurando um servidor com vsftpd para permitir que usuários virtuais acessem seu espaço. Agora ele está funcionando totalmente, mas apenas com senhas CRYPT. assim
sudo htpasswd -c /etc/vsftpd/ftpd.passwd phpmyadmin
não permitirá que eu faça login, mas
sudo htpasswd -c -d /etc/vsftpd/ftpd.passwd phpmyadmin
vai.
/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
Eu instalei o apache2.4.3 da fonte, bem como do PHP.
Coisas que tentei:
- Google muito
- Definir criptografia = 2
- pergunte para amigos
- use SHA (também não funciona)
- atualizar htpasswd e vsftpd
Estou lutando com isso há uma semana, espero que vocês possam me ajudar
-m
irá gerar MD5 baseado em hashes apache de estilo ($apr1$salt$hash
)Respostas:
htpasswd
gera hashes MD5 no formato Apache, que você pode verificar vendo que eles começam$apr1$
, mas o PAM suporta apenas formatos que a implementação de sua plataformacrypt(3)
implementa. Para Glibc, o equivalente (baseado em MD5) seria$1$
. Você só precisa gerar as senhas com uma ferramenta diferente. Aqui está um exemplo:Você pode copiar esse hash para seu
ftpd.passwd
arquivo nousername:hash
formato e deve funcionar.fonte
$1$
hash de senha MD5, até o primitivo MD5, portanto, não é totalmentecrypt
consciente.Expandindo a resposta do @ bonsaiviking, você pode gerar a senha do openssl md5 e adicioná-la ao arquivo ftpd.passwd em uma linha usando as opções de modo de lote -b do htpasswd e as opções de texto sem formatação -p da seguinte maneira:
O exemplo acima (Ubuntu) também cria um novo arquivo ftpd.passwd se ele não existir usando -c
fonte
Os dois comandos que você mostra são equivalentes porque a
-d
opção diz ao htpasswd para usar crypt, que é o padrão para a maioria dos sistemas operacionais.Se você deseja que as senhas sejam hash com md5, use
-m
O que mostra que a senha do teste foi criptografada usando o md5.
fonte
-d
.