7.1. pam¶
Linux-PAM(适用于Linux的可插入认证模块)是一套共享库,可让本地系统管理员选择应用程序如何认证用户。
7.1.1. 配置文件用法¶
配置文件为/etc/pam.conf以及/etc/pam.conf.d目录下的文件,每行作为一个记录,
记录的格式:
service type control module-path moodule-arguments
服务 类型 控制 模块路径 模块参数
类型:
account:此类型执行基于非认证的账户管理,用于限制或者允许访问服务
auth: 提供验证用户和授予特定权限
password: 用户信息更改,比如密码修改
session: 会话前后需要进行的操作,比如记录日志,挂载特定用户的文件系统等。
控制:
required: 即使某个模块验证失败,还会继续下面的验证。
resuisite: 如果失败就直接返回失败,一票否决权的
sufficient: 如果成功就直接返回, 一票通过权。
optional: 可选的,没有实质作用。
include: 引入其他文件来验证
模块路径:
直接写文件名就可以
7.1.2. 配置文件样例¶
[root@localhost ~]# cd /etc/pam.d/
[root@localhost pam.d]# cat login
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth substack system-auth
auth include postlogin
account required pam_nologin.so
account include system-auth
password include system-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
session optional pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include system-auth
session include postlogin
-session optional pam_ck_connector.so
Note
在pam.d目录下文件可以不写service的,service就是文件名,文件名不用conf结尾。
7.1.3. 常用pam模块¶
7.1.3.1. pam_access¶
模块主要用于访问管理。 它提供了基于登录名,主机或域名,互联网地址或网络号码的logdaemon样式登录访问控制,或者在非联网登录的情况下提供终端线路名称。
7.1.3.2. pam_cracklib¶
提供密码强壮性检查。
7.1.3.3. pam_debug¶
旨在作为调试助手来确定PAM堆栈的运行方式。
7.1.3.4. pam_deny¶
用于设置拒绝访问
7.1.3.5. pam_echo¶
用于打印文本消息以通知用户关于特殊事物的信息。
7.1.3.6. pam_env¶
允许设置环境环境变量
7.1.3.7. pam_exec¶
执行一个外部命令
7.1.3.8. pam_faildelay¶
可用于设置每个应用程序发生故障时的延迟。
7.1.3.9. pam_filter¶
旨在成为提供对用户和应用程序之间传递的所有输入/输出进行访问的平台。 它只适用于基于tty和(stdin / stdout)的应用程序。
7.1.3.10. pam_ftp¶
ftp匿名访问插件
7.1.3.11. pam_group¶
不会对用户进行身份验证,而是会向用户授予组成员资格(在身份验证模块的凭证设置阶段)
7.1.3.12. pam_issue¶
提示信息
7.1.3.13. pam_keyinit¶
确保调用进程具有用户默认会话密钥环以外的会话密钥环
7.1.3.14. pam_lastlog¶
显示上一次登陆信息
7.1.3.15. pam_limits¶
资源限制
7.1.3.16. pam_listfile¶
它提供了一种拒绝或允许基于任意文件的服务的方法。
7.1.3.17. pam_localuser¶
用于帮助实施站点范围的登录策略,通常包括网络用户的子集和一些特定工作站本地的帐户。
7.1.3.18. pam_loginuid¶
为通过身份验证的进程设置loginuid进程属性。
7.1.3.19. pam_mail¶
提供提示你有新邮件功能
7.1.3.20. pam_mkhomedir¶
如果会话开始时不存在,则pam_mkhomedir PAM模块将创建用户主目录
7.1.3.21. pam_motd¶
显示motd文件信息
7.1.3.22. pam_namespace¶
为具有多实例目录的会话设置私有名称空间。多实例目录根据用户名或者使用SELinux,用户名,安全上下文或两者时提供了一个不同的自身实例。
7.1.3.23. pam_nologin¶
阻止非root用户登陆
7.1.3.24. pam_permit¶
一个始终允许访问的PAM模块
7.1.3.25. pam_pwhistory¶
保存每个用户的最后密码以强制密码更改历史记录,并防止用户频繁地在相同密码之间交替。
7.1.3.26. pam_rhosts¶
授权.rhost文件认证
7.1.3.27. pam_rootok¶
用于在用户的UID为0时对用户进行身份验证
7.1.3.28. pam_securetty¶
限制root登陆的设备
7.1.3.29. pam_selinux¶
设置默认的selinux策略
7.1.3.30. pam_shells¶
检查有效shell
7.1.3.31. pam_succeed_if¶
旨在根据属于被验证用户的帐户的特性或其他PAM项目的值,验证成功或失败。
7.1.3.32. pam_tally¶
保持尝试访问的次数,可以重置计数成功,如果尝试失败太多,可以拒绝访问。
7.1.3.33. pam_tally2¶
pam_tally改进版本
7.1.3.34. pam_time¶
基于时间的访问控制
7.1.3.35. pam_timestamp¶
缓存成功的身份验证尝试,并允许您使用最近的成功尝试作为身份验证的基础。
7.1.3.36. pam_umask¶
设置umask的
7.1.3.37. pam_unix¶
传统的密码认证
7.1.3.38. pam_userdb¶
认证用户通过数据库(db)
7.1.3.39. pam_warn¶
不影响认证过程,只是记录下
7.1.3.40. pam_wheel¶
用于执行所谓的轮组。 默认情况下,如果申请人用户是wheel组的成员,它允许root权限访问系统。 如果不存在具有此名称的组,则该模块正在使用组ID为0的组。
7.1.3.41. pam_xauth¶
用于在用户之间转发xauth密钥(有时称为“cookie”)