按照网上的教程设置虚拟用户之后会发现系统账户登录不上ftp,查看日志显示认证失败。由此怀疑问题出在pam上。
百度搜索之后找到问题原因,是因为设置虚拟用户的时候注释掉了pam中关于系统账户认证的配置选项,所以导致系统账户验证失败。
系统用户与虚拟用户共存的正确配置方法:
编辑/etc/pam.d/vsftpd
在原内容前加入
auth sufficient pam_userdb.so db=/etc/vsftpd/db#db=后面接用户数据库文件地址 account sufficient pam_userdb.so db=/etc/vsftpd/db#db=后面接用户数据库文件地址
注意不要注释源文件内容!直接在源文件内容前加入上述内容!
细心一点就会发现上述两段配置内容中将网上设置虚拟用户时原本的required变成了sufficient,同时强调了新增配置内容必须在最前方。
这是因为required在验证了一次之后就不会继续验证下去,而sufficient在验证后还会继续向下验证。
所以这就是为什么新增的配置选项中用sufficient替换了required,因为都使用required注定只能验证一种登录方式。而如果把新增配置内容加到原配置文件后方的话在前面原本的系统用户的required验证后就不会继续向下验证,虚拟用户登录就不能实现了。所以才要把新增配置内容放在最前方,验证完虚拟账户继续验证系统账户,从而实现虚拟账户与本地账户共存。
没用太大作用和意义。
因为开启虚账户后,普通账户即使能登录,登录身份也会被映射成虚拟账户。。。
研究了好一段时间,没找到官方哪里有说明,但实际是会出现这种情况。