Я настраиваю сервер с 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
Я установил apache2.4.3 из исходников, а также PHP.
Вещи, которые я пробовал:
Я борюсь с этим уже неделю, надеюсь, вы, ребята, можете мне помочь в дальнейшем
htpasswd
генерирует хэши MD5 в формате Apache, что вы можете проверить, увидев, что они начинаются с $apr1$
, но PAM поддерживает только форматы, реализованные на вашей платформе. crypt(3)
орудия. Для Glibc эквивалент (на основе MD5) будет $1$
. Вам просто нужно сгенерировать пароли с помощью другого инструмента. Вот пример:
sh$ openssl passwd -1
Password:
Verifying - Password:
$1$vhzHvIYn$2Ro.R0WdLnxrWjHcs5RbA/
Вы можете скопировать этот хеш в свой ftpd.passwd
файл в username:hash
формат, и он должен работать.
Расширяя ответ @ bonsaiviking, вы можете сгенерировать пароль openssl md5 и добавить его в файл ftpd.passwd в одну строку, используя параметры пакетного режима htpasswd -b и открытого текста -p следующим образом:
htpasswd -c -p -b ftpd.passwd *username* $(openssl passwd -1 -noverify *password*)
В приведенном выше примере (Ubuntu) также создается новый файл 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.
Это показывает, что пароль теста был зашифрован с помощью md5.