Моя настройка vsftpd позволяет локальным пользователям входить в систему с использованием их обычных паролей, а другой набор пользователей - через файл passwd.
Проблема, с которой я столкнулся сейчас, заключается в том, что при использовании логина локального пользователя любой пароль принимается и может позволить пользователю войти (логины с использованием файла passwd в порядке).
Вот файл vsftpd.conf:
$ cat /etc/vsftpd.conf | grep -v ^#
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=066
anon_umask=066
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
chmod_enable=YES
chroot_list_enable=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
virtual_use_local_privs=YES
user_sub_token=$USER
local_root=/home/ftp/$USER
guest_enable=YES
guest_username=ftp
и файл /etc/pam.d/vsftpd:
$ cat vsftpd | grep -v ^#
auth sufficient /lib/security/pam_pwdfile.so pwdfile /home/ftp/passwd
auth required pam_shells.so
account required pam_permit.so
Не уверен, есть ли какой-либо другой соответствующий файл I следует опубликовать (?)
Мой vsftpd работает правильно и не позволяет использовать произвольный пароль. Вот вывод моих файлов конфигурации.
# cat /etc/vsftpd.conf | grep -ve "^#.*"
listen=YES
anonymous_enable=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
local_enable=YES
# cat /etc/pam.d/vsftpd | grep -ve "^#.*"
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
@include common-account
@include common-session
@include common-auth
auth required pam_shells.so
Надеюсь, это поможет.