广东宏昌建设有限公司网站企业网站优化推广
一:问题背景
编译安装vsftpd后,配置是正确的,但是客户端使用虚拟用户登录的时候会提示:“530 Login incorrect.”。
二:问题原因
vsftpd 没有得到PAM模块的支持,造成登录的时候验证失败。
三:解决方法
1、编译安装的时候,确保 builddefs.h
文件中启用了PAM模块的支持。因为vsftpd默认就提供了Makefile文件,需要启用或禁用对应的功能,就需要修改builddefs.h文件。
默认是启用了PAM功能,ssl和tcp wrappers功能默认是禁用的,如果改为了undef,需要改回define(默认是define)
2、编译完成后,使用 ldd
命令来检查 vsftpd
是否加载了pam模块,如果没加载,则说明缺少对应的依赖。
ldd ./vsftpd | grep -i pam
如果使用 ldd
没有输出PAM模块,说明编译vsftpd前,当前系统上缺少pam依赖没安装,但是编译的过程中没有错误提示。
所以需要安装PAM的开发包,开发包里面提供了和PAM相关的头文件和库。
例如:Ubuntu安装PAM开发包库文
sudo apt-get install libpam0g-dev# 如果还启用了ssl和TCP Wrappers功能,还需要安装以下两个开发库
sudo apt-get install libssl-dev
sudo apt-get install libwrap0-dev
3、库文件安装完成后,重新编译vsftpd
make clean && make
4、再使用 ldd
命令查看是否加载了pam
的库文件即可。
ldd ./vsftpd | grep -i pam
5、将重新编译过的vsftpd可执行文件替换原来的vsftpd文件,然后重启服务即可。