Дистрибутив altlinux-4.0.1-server. Установил vsftpd (vsftpd-2.0.5-alt3), настроил его по минимуму.
Конфиг-файл:
listen=YES
background=NO
listen_port=21
#
anonymous_enable=NO
anon_root=/var/ftp
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
anon_upload_enable=NO
anon_umask=077
#
local_enable=YES
local_root=/var/ftp
chroot_local_user=YES
write_enable=YES
#
virtual_use_local_privs=YES
guest_enable=YES
#
syslog_enable=NO
xferlog_enable=YES
xferlog_file=/var/log/xferlog.log
Запустил vsftpd, попробовал соедениться локальным пользователем. Соеденился.
Чтобы "отвязать" виртуальных пользователей ftp-сервера от файла password, и хранить их аутентификационные данные в отдельном файле, решил воспользоваться htpasswd. Установил пакеты pam_pwdfile и apache-common.
Добавил две строки, (как описано в /usr/share/doc/pam_pwdfile-0.99/README) в файл /etc/pam.d/vsftpd:
auth required /lib/security/pam_pwdfile.so pwdfile /etc/vsftpd/userpass
account required /lib/security/pam_pwdb.so
/etc/pam.d/vsftpd целиком:
auth required /lib/security/pam_pwdfile.so pwdfile /etc/vsftpd/userpass
account required /lib/security/pam_pwdb.so
auth required pam_userpass.so
auth include system-auth-use_first_pass
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth required pam_securetty.so
auth required pam_shells.so
auth required pam_nologin.so
account include system-auth
session include system-auth
Создал пользователя test с помощью htpasswd:
htpasswd -c /etc/vsftpd/userpass test
Пытаюсь соедениться. не получается. Ругается на неверные аутентификационные данные. Не дает подключиться и локальному пользователю.
/var/log/vsftpd.log:
Fri Nov 27 16:20:10 2009 [pid 8665] CONNECT: Client "192.168.116.217"
Fri Nov 27 16:20:18 2009 [pid 8664] [test1] FAIL LOGIN: Client "192.168.116.217"
Fri Nov 27 16:22:58 2009 [pid 8672] CONNECT: Client "192.168.116.217"
Fri Nov 27 16:23:02 2009 [pid 8671] [oper] FAIL LOGIN: Client "192.168.116.217"
/var/log/secure:
Nov 27 16:40:01 ftp crond[8759]: pam_tcb(crond:session): Session opened for root by (uid=0)
Nov 27 16:40:01 ftp crond[8762]: pam_tcb(crond:session): Session opened for root by (uid=0)
Nov 27 16:40:01 ftp crond[8759]: pam_tcb(crond:session): Session closed for root
Nov 27 16:40:01 ftp crond[8762]: pam_tcb(crond:session): Session closed for root
Nov 27 16:43:50 ftp vsftpd: pam_tcb(vsftpd:auth): Authentication failed for UNKNOWN USER from (uid=0)
Nov 27 16:45:01 ftp crond[8800]: pam_tcb(crond:session): Session opened for root by (uid=0)
Nov 27 16:45:01 ftp crond[8802]: pam_tcb(crond:session): Session opened for root by (uid=0)
Nov 27 16:45:01 ftp crond[8802]: pam_tcb(crond:session): Session closed for root
Nov 27 16:45:01 ftp crond[8800]: pam_tcb(crond:session): Session closed for root
Чего не хватает для нормальной аутентификации с помощью pam_pwdfile?