在配置vsFTP的时候遇到了pam认证的问题,由于写错了相关路径,造成登录失败。因为比较确定的是vsftp已经配置的没有问题了。映射的虚拟用户也添加了。一直找不到原因。vsftp的日志也很模糊,只是在/var/log/secure文件中看到了错误提示。PAM模块大多数模块都会向/var/log/secure文件报告错误。
Name (127.0.0.1:root): kkpan 331 Please specify the password. Password: 530 Login incorrect. Login failed. ftp> exit 221 Goodbye.
结合上述错误判断问题出在了pam路径上了。因为我写的是绝对路径。也不是我的错啊。
查阅了一下文档
/etc/pam.d/目录包含每个支持PAM的应用程序的PAM配置文件。每个PAM配置文件都包含一组指令,这些指令定义模块以及与之相关的任何控件或参数。
PAM的语法非常简单:
有四种类型的PAM模块接口可供选择。
auth - 此模块接口验证使用。例如,它请求并验证密码的有效性。具有此接口的模块还可以设置凭据,例如组成员身份或Kerberos票证。
account - 此模块接口验证是否允许访问。例如,它检查用户帐户是否已过期,或者是否允许用户在一天中的特定时间登录。
password - 此模块界面用于更改用户密码。
session - 此模块接口配置和管理用户会话。具有此接口的模块还可以执行允许访问所需的其他任务,例如挂载用户的主目录并使用户的邮箱可用。
required - 模块结果必须成功才能继续进行身份验证。如果此时测试失败,则在引用该接口的所有模块测试的结果完成之前,不会通知用户。
requisite - 模块结果必须成功才能继续进行身份验证。但是,如果此时测试失败,将立即通知用户反映第一次失败required 或 requisite模块测试的消息。
sufficient - 如果模块结果失败,则忽略模块结果。但是,如果标记的模块的结果sufficient成功并且没有标记的先前模块required失败,则不需要其他结果,并且用户已对服务进行身份验证。
optional - 忽略模块结果。optional当没有其他模块引用该接口时,标记为仅成为认证所必需的模块。
include - 与其他控件不同,这与模块结果的处理方式无关。此标志将拉入配置文件中与给定参数匹配的所有行,并将它们作为参数附加到模块。
PAM 在某些模块的身份验证期间使用参数将信息传递给可插入模块。
一般都是xxx.so文件
以 vsftpd为例:pam_userdb.so就是模块
auth required pam_userdb.so db=/etc/vsftpd/ftpusr |
PAM 在某些模块的身份验证期间使用参数将信息传递给可插入模块。
还拿上边的为例,db=/etc/vsftpd/ftpusr参数。就是读取db文件,该pam_userdb.so模块使用存储在Berkeley DB文件中的信息来验证用户。Berkeley DB是一个嵌入在许多应用程序中的开源数据库系统。该模块接受一个db参数,以便Berkeley DB知道哪个数据库用于所请求的服务。