美文网首页
Linux PAM简介

Linux PAM简介

作者: 多关心老人 | 来源:发表于2023-02-26 23:05 被阅读0次

上周客户现场遇到一个奇怪的问题,在执行应用安装脚本时,需要输入密码,这个时候即使输入了正确的密码依然报校验失败。当时尝试解决了一下,但是没找到问题的根本原因,还会报其他原因。为了不耽误交付进度,只能让重新安装操作系统。
当时就怀疑和Linux的PAM有关,但苦于对PAM不熟,网上也找不到对应的解决方案,这两天正好利用周末研究下Linux的PAM机制,下面简要介绍一下什么是PAM。
在Linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等。在Linux中进行身份或是状态的验证程序是由PAM来进行的,PAM(Pluggable Authentication Modules)可动态加载验证模块,因为可以按需要动态的对验证的内容进行变更,所以可以大大提高验证的灵活性。
PAM的规则文件一般有4列,这里以/etc/pam.d/sshd为例:

#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
# Used with polkit to reauthorize users in remote sessions
-auth      optional     pam_reauthorize.so prepare
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin
# Used with polkit to reauthorize users in remote sessions
-session   optional     pam_reauthorize.so prepare

第一列代表模块类型
第二列代表控制标记
第三列代表模块路径
第四列代表模块参数

模块类型常见如下几种:


image.png

控制标记如下:


image.png

这里我不打算具体介绍PAM的细节和配置规则,这里推荐大家看这一篇博客,写的非常详细字也非常多,感兴趣的可以抽半个小时看一下。

有了上面对PAM的初步认识后,下面我们来看几个小例子,通过例子加深对PAM的了解,以下例子都是在CentOS 8环境下实验。

  1. root用户su普通用户也要用密码
    我们创建一个普通并赋密码,在root下通过su - 切换该账号登录是不需要密码的,如图:


    image.png

    这是因为在/etc/pam.d/su中配置了当用户是root时直接返回成功不用输密码


    image.png
    当我们把第二行的sufficient改成required再切换用户就要输密码了
    image.png
  2. 普通用户su - root用户也不用密码
    我们在刚才的/etc/pam.d/su第二行前面加上一行


    image.png
    image.png

    这个时候我们在test下直接su到root,不用输入密码。

  3. 不用密码即可登录
    在/etc/pam.d/system-auth中加一行


    image.png
    image.png

    可以看到在输入用户名后直接回车就能进入系统。

  4. 有密码也不能登录
    注:该方法会导致你退出后再也登陆不了系统,请先做好快照再实验。
    把下图中原来的sufficient改成required


    image.png
    image.png

    这个时候我们发现系统进入不了了。

今天的小实验做完了,通过这4个实验我们初步知道PAM的作用和怎么用了,还有很多其他知识点等待我们在实践中取挖掘,希望大家在遇到类似问题时有个大概的判断和方向去排查。

相关文章

网友评论

      本文标题:Linux PAM简介

      本文链接:https://www.haomeiwen.com/subject/kegcldtx.html