在配置一台ftp服务器,但是自己新建立的ftp用户无法登录,客户端提示vsftpd 530 Login incorrect. 话说vsftpd.conf文件配置的没问题,而且用自己的系统帐号登录也没问题。 网上有些地方说配置文件少pam_service_name=vsftpd,但是我的配置文件中有这行了。 到处找各种权限问题,没有发现有啥错误的地方。之后尝试把ftp user的 shell改为sh后,能登录了。以前看的文章都是让把ftp用户的shell设置成nologin 或者 false, 以免ftp用户有shell登录权限,但是为啥到这就不行了呢? 网上找了一下,原来是vsftpd通过pam进行验证shell,而nologin 和 false 是不在/etc/shells中的,所以验证不能通过,自然不能登录了。一个解决办法是,将nologin和false(或者只放用到的那个)添加到/etc/shells中,即 #echo -e "/usr/sbin/nologin n/bin/false" >> /etc/shells 。但是/etc/shells中记录的是valid login shells, 这样做等于是将nologin和false也算进来了,不知道对其他软件或者验证方式会不会造成影响。当然ssh登录是不行的,虽然放到valid login shells中了,但这两个也不是可用的shell。
网上还有另外一种方法,禁止vsftpd通过pam认证,并将check_shell配置为NO,然后添加用户的时候将用户的shell配置为/bin/false或nologin,这样既能够禁止用户ssh登录又能够正常使用ftp。即 /etc/pam.d/vsftpd #auth required pam_shells.so #注释此行/etc/vsftpd.confcheck_shell=NO #此参数只在不使用pam时才生效,且默认为true。此方法也能解决问题,而且不用改变/etc/shells, 避免不必要的麻烦。但是相对来说vsftpd可能会变得没那么 "vs(Very Secure)"。不知还有没有其他更完善的解决办法。
|