linux 中的 PAM 是什么
配置ftp认证的时候,需要用的 PAM 相关的知识,之前是简单的了解过,只知道和认证相关,可以判断的用户的密码对不对,其实这个 pam 的名字是 可以插入的认证模块 或者是 可以动态验证的模板, 比密码验证要强大的多 ,比如密码是否过期,账号是否被锁定...。
最重要的是认证系统和程序功能是相分离的,非常灵活,通过配置文件,就可以解决认证问题,同时不用修改程序
PAM 可以插入的认证模块
在linux中要执行一些特定的程序,比如进行认证,比如想登录系统。必须通过认证,这个认证的过程是通过PAM来完成的。
PAM 配置文件一般一行有四列,多行表示多个认证
四列的作用
- 模块的类型 (auth, account, session, passwd)
- 控制标记 (requird, requisite, sufficient, optional)
- 模块位置 不同的系统位置可能不同 (/usr/lib/x86_64-linux-gnu/security/)
- 模块的参数
模块的类型
- auth -- 最常见的密码认证,和权限分配
- account -- 账号的权限,合法性,是否过期
- session -- 会话控制
- password
控制标识
- required -- 全部通过验证返回成功,中间即使没有通过验证也不提示,全部通过才成功。
- requisite -- 遇到失败的验证规则,就返回失败,可以知道那个规则没通过验证。
- sufficient -- 有一个通过验证,就通过验证
- optonal -- 即使没有通过验证,也允许程序提供服务
模板位置 系统不同位置可能不同
ls /usr/lib/x86_64-linux-gnu/security/
pam_access.so pam_keyinit.so pam_permit.so pam_tally2.so
pam_debug.so pam_lastlog.so pam_pwhistory.so pam_tally.so
pam_deny.so pam_limits.so pam_rhosts.so pam_time.so
pam_echo.so pam_listfile.so pam_rootok.so pam_timestamp.so
pam_env.so pam_localuser.so pam_securetty.so pam_tty_audit.so
pam_exec.so pam_loginuid.so pam_selinux.so pam_umask.so
pam_faildelay.so pam_mail.so pam_sepermit.so pam_unix.so
pam_filter.so pam_mkhomedir.so pam_shells.so pam_userdb.so
pam_ftp.so pam_motd.so pam_stress.so pam_warn.so
pam_group.so pam_namespace.so pam_succeed_if.so pam_wheel.so
pam_issue.so pam_nologin.so pam_systemd.so pam_xauth.so