按照以往的配置,今天早上又配了一台仅允许虚拟用户登录的ftp
配置好之后,却发现无论如何虚拟用户都无法验证通过,反倒是系统用户可以。
既然是与验证相关,问题肯定出在pam.d相关联的地方,初步的估计是vsftp没有调用pam方式来验证虚拟用户。问题是已经解决了,现将解决办法以及可能用到的其它解决办法一并写出。
本次的环境是
AS4 update3
vsftp 2.0.5 源码
用命令 ldd vsftpd 检查发现
# ldd vsftpd
libdl.so.2 => /lib/libdl.so.2 (0x00686000)
libnsl.so.1 => /lib/libnsl.so.1 (0x05fb6000)
libresolv.so.2 => /lib/libresolv.so.2 (0x008fe000)
libutil.so.1 => /lib/libutil.so.1 (0x00af9000)
libcap.so.1 => /lib/libcap.so.1 (0x00111000)
libc.so.6 => /lib/tls/libc.so.6 (0x0055b000)
/lib/ld-linux.so.2 (0x00542000)
没有调用到/lib/libpam.so.0 原因在于系统中缺少pam-devel这个工具,该工具在安装盘的第二张中有(应该是第二张)
安装一下
# rpm -ivh pam-devel-0.77-65.1.i386.rpm
然后 make clean;make
然后重新用ldd vsftpd来检查一下
# ldd vsftpd
libpam.so.0 => /lib/libpam.so.0 (0x00aac000)
libdl.so.2 => /lib/libdl.so.2 (0x00686000)
libnsl.so.1 => /lib/libnsl.so.1 (0x05fb6000)
libresolv.so.2 => /lib/libresolv.so.2 (0x008fe000)
libutil.so.1 => /lib/libutil.so.1 (0x00af9000)
libcap.so.1 => /lib/libcap.so.1 (0x00111000)
libc.so.6 => /lib/tls/libc.so.6 (0x0055b000)
/lib/ld-linux.so.2 (0x00542000)
使用新生成的vsftpd来运行,应该就可以了,当然,前提是其它方面都配置正确。
另外可能的一个原因是,据说,在一些比较旧的版本中,默认不支持pam方式的验证
在原文件 builddefs.h 中存在这么一行
#define VSF_BUILD_PAM //这是支持pam方式
如果是
#undef VSF_BUILD_PAM //这是不支持pam方式,改成上面那行就行了
这个我自己没有验证过,听说而已,一并写上,以供参考。
配置好之后,却发现无论如何虚拟用户都无法验证通过,反倒是系统用户可以。
既然是与验证相关,问题肯定出在pam.d相关联的地方,初步的估计是vsftp没有调用pam方式来验证虚拟用户。问题是已经解决了,现将解决办法以及可能用到的其它解决办法一并写出。
本次的环境是
AS4 update3
vsftp 2.0.5 源码
用命令 ldd vsftpd 检查发现
# ldd vsftpd
libdl.so.2 => /lib/libdl.so.2 (0x00686000)
libnsl.so.1 => /lib/libnsl.so.1 (0x05fb6000)
libresolv.so.2 => /lib/libresolv.so.2 (0x008fe000)
libutil.so.1 => /lib/libutil.so.1 (0x00af9000)
libcap.so.1 => /lib/libcap.so.1 (0x00111000)
libc.so.6 => /lib/tls/libc.so.6 (0x0055b000)
/lib/ld-linux.so.2 (0x00542000)
没有调用到/lib/libpam.so.0 原因在于系统中缺少pam-devel这个工具,该工具在安装盘的第二张中有(应该是第二张)
安装一下
# rpm -ivh pam-devel-0.77-65.1.i386.rpm
然后 make clean;make
然后重新用ldd vsftpd来检查一下
# ldd vsftpd
libpam.so.0 => /lib/libpam.so.0 (0x00aac000)
libdl.so.2 => /lib/libdl.so.2 (0x00686000)
libnsl.so.1 => /lib/libnsl.so.1 (0x05fb6000)
libresolv.so.2 => /lib/libresolv.so.2 (0x008fe000)
libutil.so.1 => /lib/libutil.so.1 (0x00af9000)
libcap.so.1 => /lib/libcap.so.1 (0x00111000)
libc.so.6 => /lib/tls/libc.so.6 (0x0055b000)
/lib/ld-linux.so.2 (0x00542000)
使用新生成的vsftpd来运行,应该就可以了,当然,前提是其它方面都配置正确。
另外可能的一个原因是,据说,在一些比较旧的版本中,默认不支持pam方式的验证
在原文件 builddefs.h 中存在这么一行
#define VSF_BUILD_PAM //这是支持pam方式
如果是
#undef VSF_BUILD_PAM //这是不支持pam方式,改成上面那行就行了
这个我自己没有验证过,听说而已,一并写上,以供参考。
启用vsftpd的被动模式
专业linux服务器维护,上海个人兼职


2007/09/24 13:29 | by 