今天配置vsftp服务器时参考了该文档http://blog.chinaunix.net/uid-317994-id-2133014.html,最后登录的时候总是报 530 Login incorrect 错误信息,在确认相关配置没有填错的情况下,又查了相关文档。

很多朋友反映可能是selinux或者防火墙iptables,但是本机已经确认关闭了。也有朋友是说可能32位和64位的PAM 设置有差异但是自己是32位,设置没有错误,

32位设置如下:

auth    sufficient      /lib/security/pam_userdb.so    db=/etc/vsftpd/virtusers
account sufficient      /lib/security/pam_userdb.so    db=/etc/vsftpd/virtusers    

64位设置如下:

auth    sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers
account sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers


最后自己查看相关日志文件cat  /var/log/secure发现具体错误信息如下:

error retrieving information about user lXXX

很明显是 /lib/security/pam_userdb.so这个载入失败,后来突然想起来pam原配置文件被我修改成如下:


cat /etc/pam.d/vsftpd
#%PAM-1.0

session    optional    pam_keyinit.so    force revoke
auth      required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth      required pam_shells.so
auth      include system-auth
account    include system-auth
session    include system-auth
session    required    pam_loginuid.so


auth    sufficient      /lib/security/pam_userdb.so    db=/etc/vsftpd/virtusers
account sufficient      /lib/security/pam_userdb.so    db=/etc/vsftpd/virtusers


于是重新调换位置,放在配置文件首,重启生效,正常登录


cat /etc/pam.d/vsftpd
#%PAM-1.0
auth    sufficient      /lib/security/pam_userdb.so    db=/etc/vsftpd/virtusers
account sufficient      /lib/security/pam_userdb.so    db=/etc/vsftpd/virtusers

session    optional    pam_keyinit.so    force revoke
auth      required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth      required pam_shells.so
auth      include system-auth
account    include system-auth
session    include system-auth
session    required    pam_loginuid.so


其他常见错误
(1)500错误
500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
这种一般是因为用户的根目录可写,同时又使用了chroot限制,但这在这个版本的vsftp中默认是不被允许的。要修复这个错误,可以用命令chmod a-w /home/ftp 去除用户根目录的写权限,注意把目录替换成你自己的。
同时,在根目录下创建可以有写权限的文件夹,这样就可以进入该文件夹中,上传东西了。
或者显式指定根目录可以写,在vsftpd的配置文件中增加下列两项中的一项:对于标准的vsftpd build (vsftpd):
allow_writeable_chroot=YES
对于扩展的vsftpd build (vsftpd-ext):
allow_writable_chroot=YES
(2)550错误
550 Create directory operation failed.
这种一般是权限问题,不能创建目录或文件,重新修改下目录权限即可,同时注意是不是文件拥有者是不是ftp用户/宿主。