Я настраиваю сервер с помощью 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.
Вещи, которые я пробовал:
- Google много
- Установить crypt = 2
- Спроси друзей
- использовать SHA (тоже не работает)
- обновить htpasswd и vsftpd
Я боролся с этим уже неделю, я надеюсь, что вы, ребята, можете помочь мне в дальнейшем
-m
сгенерирую хэши в стиле Apache в стиле MD5 ($apr1$salt$hash
)Ответы:
htpasswd
генерирует MD5-хэши в формате Apache, который вы можете проверить, увидев, что они начинаются$apr1$
, но PAM поддерживает только те форматы, которые реализует ваша платформаcrypt(3)
. Для Glibc эквивалент (на основе MD5) будет$1$
. Вам просто нужно сгенерировать пароли с помощью другого инструмента. Вот пример:Вы можете скопировать этот хэш в ваш
ftpd.passwd
файл вusername:hash
формате, и он должен работать.источник
$1$
хэша пароля MD5 вплоть до примитива MD5, поэтому он не полностьюcrypt
осведомлен.Развернув ответ @ bonsaiviking, вы можете сгенерировать пароль openssl md5 и добавить его в файл ftpd.passwd в одну строку, используя параметры пакетного режима htpasswd -b и параметры открытого текста -p следующим образом:
В приведенном выше примере (Ubuntu) также создается новый файл ftpd.passwd, если он не существует, с помощью -c
источник
Две команды, которые вы показываете, эквивалентны, потому что
-d
опция говорит htpasswd использовать crypt, который используется по умолчанию для большинства операционных систем.Если вы хотите, чтобы пароли хэшировались с помощью md5, вам следует использовать
-m
Который показывает, что пароль теста был зашифрован с использованием md5.
источник
-d
.