最近在centos搭建vsftpd,在两台服务器上各部署了一套ftp,但是其中一台可以正常用户登录,另一台用户登录报:530 Login incorrect,两边部署明明是一模一样的,折腾了大半天,各种百度,最后通过查询系统安全日志文件,看到了/etc/shells有问题,然后对比了两台服务器的这个文件的权限类型,尝试了把它改成跟正常登录的那个一样权限,果然就可以登录了!
C:\Users\luo>ftp 192.193.4.96
连接到 192.193.4.96。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.193.4.96:(none)): ftp003
331 Please specify the password.
密码:
530 Login incorrect.
具体操作如下:
1、当然遇到无法登录首先是要检查用户和密码是否输入正确
2、再检查配置文件是否配置正确,主要是这三个文件:
-
# vim /etc/vsftpd/vsftpd.conf
-
# vim /etc/vsftpd/user_list
-
# vim /etc/vsftpd/chroot_list
3、然后检查系统安全日志,看返回日志,发现点端倪,但不确定是什么原因
pam_shells(vsftpd:auth): /etc/shells is either world writable or not a normal file
4、然后对比了两台服务器中的 /etc/shells 文件的权限类型,确有不一样
1)无法登录的服务器:这个类型是777(-rwxrwxrwx.)
2)可以登录的服务器:这个类型是644(-rw-r--r--.)
常用的linux文件权限:
444 -r--r--r--
600 -rw-------
644 -rw-r--r--
666 -rw-rw-rw-
700 -rwx------
744 -rwxr--r--
755 -rwxr-xr-x
777 -rwxrwxrwx
5、把无法登录的服务器的shells文件修改为644
# chmod -R 644 /etc/shells
6、在cmd中尝试登录,果然就正常了,至此,问题总算解决了。
C:\Users\luo>ftp 192.193.4.96
连接到 192.193.4.96。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.193.4.96:(none)): ftpuser
331 Please specify the password.
密码:
230 Login successful.
注:/etc/shells 是一个有效登陆shell的列表,在调用chsh改变登陆shell时,会查询这个文件。另外一些程序会根据这个文件来判断一个用户是否是有效用户,例如FTP服务会阻止那些shell不在 /etc/shells 里的用户登陆。