vsftpd 将shell设置成为nologin后不能登录解决办法

在配置一台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.conf
check_shell=NO #此参数只在不使用pam时才生效,且默认为true。
此方法也能解决问题,而且不用改变/etc/shells, 避免不必要的麻烦。但是相对来说vsftpd可能会变得没那么 "vs(Very Secure)"。不知还有没有其他更完善的解决办法。
posted @ 2011-05-26 18:20  leetom  阅读(2823)  评论(0编辑  收藏  举报