从源代码安装vsftpd,配置虚拟用户,结果老530 Login incorrect,直接崩溃,后来找到了原因,原来是对pam的支持不足。
解决方案:
第一个要注意的事情是make编译之前看一下builddefs.h这个文件的内容
vsftpd-2.0.3这个版本里这个文件的内容是这样的:
# cat builddefs.h
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL
这里#define VSF_BUILD_PAM指定了要vsftpd支持pam,所以不要改成#undef VSF_BUILD_PAM
检查完builddefs.h后,make编译,用ldd命令检查生成的vsftpd文件有没有加载/lib/libpam.so.0
# ldd vsftpd
libpam.so.0 =>; /lib/libpam.so.0 (0x4001e000)
libdl.so.2 =>; /lib/libdl.so.2 (0x40026000)
libnsl.so.1 =>; /lib/libnsl.so.1 (0x40029000)
libresolv.so.2 =>; /lib/libresolv.so.2 (0x4003e000)
libutil.so.1 =>; /lib/libutil.so.1 (0x40050000)
libcap.so.1 =>; /lib/libcap.so.1 (0x40053000)
libc.so.6 =>; /lib/tls/libc.so.6 (0x42000000)
/lib/ld-linux.so.2 =>; /lib/ld-linux.so.2 (0x40000000)
如果有,只要后面配置步骤正确,虚拟用户肯定没有问题。
如果没有,相信make过程中会出现这个Warning信息
引用:sysdeputil.c:1112: warning: `vsf_insert_uwtmp' defined but not used
sysdeputil.c:1151: warning: `vsf_remove_uwtmp' defined but not used
解决办法:安装pam-devel
以redhat9为例
# rpm -ivh pam-devel-0.75-48.i386.rpm
安装后,
# make clean
# make
再检查vsftpd,肯定有libpam.so.0了
这样再按照正确的配置方法去配置,虚拟用户肯定没有问题。