我正在运行 Ubuntu 12.04 LTS。我使用 apt 进行了一些小更新。重新启动后,vsftp 停止接受连接系统用户登录。在 auth 日志中,我收到以下错误
Dec 22 22:03:13 helium vsftpd: PAM unable to dlopen(pam_cracklib.so): /lib/security/pam_cracklib.so: cannot open shared object file: No such file or directory
Dec 22 22:03:13 helium vsftpd: PAM adding faulty module: pam_cracklib.so
Dec 22 22:03:13 helium vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
Dec 22 22:03:13 helium vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=cam rhost=192.168.1.121
Dec 22 22:03:13 helium vsftpd: pam_winbind(vsftpd:auth): getting password (0x00000388)
Dec 22 22:03:13 helium vsftpd: pam_winbind(vsftpd:auth): pam_get_item returned a password
我从 common-password 中注释掉了 pam_cracklib.so,然后在下一个 lib 中出现错误
Dec 22 22:08:57 helium vsftpd: PAM unable to dlopen(pam_shells.so): /lib/security/pam_shells.so: cannot open shared object file: No such file or directory
Dec 22 22:08:57 helium vsftpd: PAM adding faulty module: pam_shells.so
Dec 22 22:08:57 helium vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
Dec 22 22:08:57 helium vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=cam rhost=192.168.1.120
Dec 22 22:08:57 helium vsftpd: pam_winbind(vsftpd:auth): getting password (0x00000388)
Dec 22 22:08:57 helium vsftpd: pam_winbind(vsftpd:auth): pam_get_item returned a password
Dec 22 22:09:00 helium vsftpd: PAM unable to dlopen(pam_shells.so): /lib/security/pam_shells.so: cannot open shared object file: No such file or directory
然后我注意到这个目录不再存在 /lib/security/ 它现在似乎位于 /lib/x86_64-linux-gnu/security
因此我在两者之间建立了符号链接,但随后出现了这些错误
Dec 22 22:11:33 helium vsftpd: PAM unable to dlopen(pam_shells.so): /lib/security/pam_shells.so: failed to map segment from shared object: Cannot allocate memory
Dec 22 22:11:33 helium vsftpd: PAM adding faulty module: pam_shells.so
Dec 22 22:11:33 helium vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
Dec 22 22:11:33 helium vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=cam rhost=192.168.1.120
Dec 22 22:11:33 helium vsftpd: pam_winbind(vsftpd:auth): getting password (0x00000388)
Dec 22 22:11:33 helium vsftpd: pam_winbind(vsftpd:auth): pam_get_item returned a password
我目前正在跑步
Package: vsftpd
Status: install ok installed
Priority: extra
Section: net
Installed-Size: 334
Maintainer: Ubuntu Developers <[email protected]>
Architecture: amd64
Version: 2.3.5-1ubuntu2
我已经清除并重新安装,但仍然出现同样的错误。
我的 vsftp 配置非常简单。允许本地用户和 chroot 用户。
有人有主意吗?
答案1
我跟着这线程并使用了这个家伙的 deb 包来修复我的实例。从那时起就一直为我工作。我必须做的一件事是从 apt 中排除 vsftpd,这样它就不会在我修复官方问题之前将其恢复回来。
答案2
遇到了完全相同的问题。刚刚从这里下载了最新的 vsftpd:https://security.appspot.com/downloads/vsftpd-3.0.2.tar.gz,提取并编译它。然后我用新构建的二进制文件替换了 /usr/sbin 中的二进制文件。现在可以正常工作了。不确定这是否会破坏 Ubuntu 的进一步无人值守升级,但至少它又可以正常工作了。
顺便说一句,我需要 apt-get make、gcc 和 libssl-dev,并将 builddefs.h 中的 SSL 行更改为:#define VSF_BUILD_SSL。不过没有测试 SSL。