J'utilise pure-ftpd avec mysql pour authentifier les utilisateurs.
Voici mon mysql.conf
MYSQLServer localhost
MYSQLPort 3306
MYSQLSocket /var/run/mysqld/mysqld.sock
MYSQLUser user
MYSQLPassword pwd
MYSQLDatabase my_db
MYSQLCrypt crypt()
MYSQLGetPW SELECT password FROM ftp_users WHERE login="\L"
MYSQLGetUID SELECT u_id FROM ftp_users WHERE login="\L"
MYSQLGetGID SELECT g_id FROM ftp_users WHERE login="\L"
MYSQLGetDir SELECT dir FROM ftp_users WHERE login="\L"
MySQLGetQTAFS SELECT quota_files FROM ftp_users WHERE login="\L"
MySQLGetQTASZ SELECT quota_size FROM ftp_users WHERE login="\L"
MySQLGetRatioUL SELECT ul_ratio FROM ftp_users WHERE login="\L"
MySQLGetRatioDL SELECT dl_ratio FROM ftp_users WHERE login="\L"
MySQLGetBandwidthUL SELECT ul_bandwidth FROM ftp_users WHERE login="\L"
MySQLGetBandwidthDL SELECT dl_bandwidth FROM ftp_users WHERE login="\L"
J'ai ensuite essayé de redémarrer pure-ftpd-mysql et pure-ftpd
Ma table contient un champ avec le mot de passe (pwd) sous la forme suivante
password varchar(255)
Lorsque j'insère un utilisateur avec un pwd en clair, je peux me connecter sans problème avec le login et le mot de passe. Lorsque j'insère un hash avec 'lol' tel que SHA512 ou un hash BCrypt, je ne peux pas me connecter avec le pwd 'lol'. Je ne peux pas me connecter avec le pwd 'lol'.
BCrypt $2a$06$JrvxpMAvi6MnRSIvZQMMxOffIDLtEP7lrKNe0k0CTsK51v4zujfpS
SHA512 3DD28C5A23F780659D83DD99981E2DCB82BD4C4BDC8D97A7DA50AE84C7A7229A6DC0AE8AE4748640A4CC07CCC2D55DBDC023A99B3EF72BC6CE49E30B84253DAE
Cependant, si je colle le hachage, il se connecte avec succès, car je suppose qu'il le prend comme une valeur en clair.
J'ai essayé de changer le fichier mysql.conf en
MYSQLCrypt crypt
Mais ceci rompt complètement avec la réalité. Il y a beaucoup de sites qui disent d'utiliser crypt, mais les commentaires dans mon fichier de configuration listent crypt() comme l'une des options.
J'ai lu de nombreux messages et forums, mais la chose la plus proche que j'ai trouvée est celle-ci, qui ne fonctionne pas du tout.
https://serverfault.com/a/630806/302696
Voici ce que pure-ftpd commence par faire
Starting ftp server: Running: /usr/sbin/pure-ftpd-mysql -l mysql:/etc/pure-ftpd/db/mysql.conf -l puredb:/etc/pure-ftpd/pureftpd.pdb -l puredb:/etc/pure-ftpd/pureftpd.pdb -E -F /etc/pure-ftpd/fortunes.txt -j -H -J ALL:!aNULL:!SSLv3 -u 1000 -8 UTF-8 -A -O clf:/var/log/pure-ftpd/transfer.log -B
En gros, il n'utilise pas le cryptage ou je ne l'utilise pas correctement. Je pensais qu'il pouvait gérer SHA512 nativement avec mysql mais ce n'est pas le cas. Les autres choses auxquelles je pense sont que j'ai besoin de code avec la configuration mais je ne vois pas pourquoi cela nécessiterait quoi que ce soit.