Linux 之旅 12:PAM模块和用户通讯

Linux 之旅 12:PAM模块和用户通讯

image-20210822153614175

实际上本篇的内容与上篇Linux 之旅 11:Linux 账号管理与 ACL 权限设置是前后关联的,因为篇幅原因拆分成了两篇发布。

使用者的特殊shell与PAM模块

/sbin/nologin

像之前说的,在账户设置中使用/sbin/nologin作为登录用shell的账号将不能登录。特别的,如果需要给这些用户在不能登录时显式特定的内容,可以将内容写入/etc/nologin.txt

[root@xyz ~]# usermod -s '/sbin/nologin' user1
[root@xyz ~]# echo 'you use a shell without login' >> /etc/nologin.txt
[root@xyz ~]# cat /etc/nologin.txt
you use a shell without login

如果使用user1进行登录,将看到:

ssh user1@192.168.1.105
user1@192.168.1.105's password:
Last login: Sat Aug 21 17:29:44 2021
you use a shell without login
Connection to 192.168.1.105 closed.

当然,如果有必要,记得将user1的登录用shell修改回来。

PAM

PAM的全称是Pluggable Authentication Modules(插入式验证模块)。实际上PAM是一组API,可以定制验证流程,并在程序的实际运行中调用以完成身份验证。

PAM设置

通常,我们会为PAM添加一个与程序同名的配置文件作为验证流程的配置项,比如当你执行passwd时,涉及身份验证的部分的执行流程是这样的:

  1. 执行/bin/passwd,并输入密码。
  2. 调用PAM进行验证工作。
  3. PAM从/etc/pam.d/目录中寻找与passwd同名的配置文件,并加载。
  4. 根据加载的配置内容,调用相应的PAM模块完成验证工作。
  5. 将验证结果返回给passwd程序。

如果查看/etc/pam.d/passwd,其内容如下:

[root@xyz ~]# cat /etc/pam.d/passwd
#%PAM-1.0
auth       include      system-auth
account    include      system-auth
password   substack     system-auth
-password   optional    pam_gnome_keyring.so use_authtok
password   substack     postlogin

内容包含三列信息,分别是:验证类型,控制标识以及模块。

验证类型

验证类型主要分为以下几种:

  • auth

    auth(authentication)主要用于验证用户身份,通常需要使用密码。

  • account

    主要用于授权,检验用户是否有相应的权限。

  • session

    用于管理该次命令执行时PAM设置的环境信息。

  • password

    提供验证的修订任务,主要是修改密码。

需要说明的是这四种验证类型通常是有执行顺序的,通常需要先进行身份验证(auth),通过后才会进行授权(account),然后才是管理环境信息(session),最后根据需要可能会修改密码(password)。但这也并不绝对。

验证控制标识

验证控制标识(control flag)的作用有点像编程语言或shell scripts中的控制流程,即使用不同的控制标识可以控制其后的验证模块的执行过程。

看完主要的控制标识介绍你就会明白我说的是什么意思:

  • required

    无论成功失败,都将继续后续的验证流程。通常用于日志功能。

  • requisite(必要)

    如果失败,则立即终止验证流程,并返回failure,如果成功,继续验证流程。

  • sufficient(充分)

    如果成功,则立即终止验证流程,并返回success,如果失败,则继续验证流程。与requisite逻辑相反。

  • optional

    大多数情况下只起显式信息的作用,不影响验证流程。

那个include并非控制标识,而是类似于C++或PHP中的效果,可以使用include加载额外的PAM配置。

常用模块简介

PAM相关的文件主要有:

  • /etc/pam.d/*:PAM配置文件
  • /lib64/security/*:PAM模块文件
  • /etc/security/:PAM环境配置文件
  • /usr/share/doc/pam-*/:PAM说明文件

下面通过login程序介绍主要的PAM模块。

先查看login的PAM配置:

[root@xyz ~]# cat /etc/pam.d/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

用到的PAM模块主要有:

  • pam_securetty.so:限制管理员仅能从安全的终端登录。

  • pam_nologin.so&

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值