最近在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 裏的用戶登陸。