Linux笔记 No.22---(Linux - PAM)

一、PAM 介绍

在Linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如像我们使用su命令时,系统会提示你输入root用户的密码.这就是su命令通过调用PAM模块实现的

在Linux中进行身份或是状态的验证程序是由PAM来进行的,PAM(Pluggable Authentication Modules)可动态加载验证模块,因为可以按需要动态的对验证的内容进行变更,所以可以大大提高验证的灵活性。

PAM可以说是一套程序编程接口(api application programming interface) ,它提供了一连串的验证,只要用户将验证阶段的需求告诉给PAM,,PAM就会进行验证,将结果反馈给用户。简而言之,PAM就是一个独立的api,任何程序有需求,可以向PAM发出验证要求通知,PAM经过验证将结果反馈给该程序。

优点:
它通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。

二、PAM的配置文件

PAM使用配置/etc/pam.d/下的文件来管理对程序的认证方式。应用程序调用相应的配置文件,从而调用本地的认证模块。模块放置在/usr/lib64/security/下

PAM模块
PAM 的各个模块一般存放在/usr/lib64/security/*中,以动态库文件的形式存在,文件名格式一般为 pam_*.so。

  • /usr/lib64/security/* :PAM 模块文件的实际放置目录
  • /usr/share/doc/pam-1.1.8/ :详细的 PAM 说明
[root@admin ~]# cd /usr/lib64/security/
[root@admin security]# ls
pam_access.so     pam_limits.so          pam_shells.so
pam_cap.so        pam_listfile.so        pam_stress.so
pam_chroot.so     pam_localuser.so       pam_succeed_if.so
pam_console.so    pam_loginuid.so        pam_systemd.so
pam_cracklib.so   pam_mail.so            pam_tally2.so
pam_debug.so      pam_mkhomedir.so       pam_time.so
pam_deny.so       pam_motd.so            pam_timestamp.so
pam_echo.so       pam_namespace.so       pam_tty_audit.so
pam_env.so        pam_nologin.so         pam_umask.so
pam_exec.so       pam_permit.so          pam_unix_acct.so
pam_faildelay.so  pam_postgresok.so      pam_unix_auth.so
pam_faillock.so   pam_pwhistory.so       pam_unix_passwd.so
pam_filter        pam_pwquality.so       pam_unix_session.so
pam_filter.so     pam_rhosts.so          pam_unix.so
pam_ftp.so        pam_rootok.so          pam_userdb.so
pam_group.so      pam_securetty.so       pam_warn.so
pam_issue.so      pam_selinux_permit.so  pam_wheel.so
pam_keyinit.so    pam_selinux.so         pam_xauth.so
pam_lastlog.so    pam_sepermit.so

PAM 的配置文件

针对各种服务和应用已经定义好的 PAM 配置文件 /etc/pam.d/ 文件夹内的多个文件

  • /etc/pam.d/* :每个程序/服务的 pam 配置文件
  • /etc/security/* :其他相关的配置文件

/etc/pam.d/ 下的配置文件通常以每一个使用 PAM 的程序的名称来命令

比如 /etc/pam.d/su,/etc/pam.d/login 等等。还有些配置文件比较通用,经常被别的配置文件引用,也放在这个文件夹下,比如 /etc/pam.d/system-auth。

[root@admin pam.d]# ls
atd                  password-auth-ac   sudo
chfn                 polkit-1           sudo-i
chsh                 postlogin          su-l
config-util          postlogin-ac       system-auth
crond                remote             system-auth-ac
fingerprint-auth     runuser            systemd-user
fingerprint-auth-ac  runuser-l          vlock
login                smartcard-auth     vmtoolsd
other                smartcard-auth-ac  vsftpd
passwd               sshd
password-auth        su

/etc/pam.d/下的这些配置文件的格式都保持一致:

login配置文件

[root@admin ~]# 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 版本之外,其他每一行都是一个独立的验证流程,每一行可以区分为四个字段,分别是验证类别(type)、控制标记(control_flag)、PAM的模块、该模块的参数

一般的,PAM配置文件都保存在/etc/pam.d目录里。大多的情况下,一个配置文件将在对应至少一个PAM模块。这些模块大多在 /usr/lib64/security 下。在 /usr/share/doc/pam-1.1.8/txts/ 以及 html 子目录下是每个模块的详细描述。

配置文件语法:

第一个字段:验证类别(type)
验证类别主要分为四种:

  • auth (身份认证管理)
    是authentication(认证)的缩写,所以这种类别主要用来检验用户的身份,这种类别通常是需要密码来检验的,所以后接续的模块用来检验用户的身份。例如,PAM auth规则验证用户是否提供了有效的用户名和口
    令凭证。
  • account (账户管理)
    account(账号)大部分用于进行authorization(授权),这种类别主要检验用户是否具有正确的权限。依据账户策略允许或拒绝访问。例如,PAM account规则可依据时间,口令有效期限或者受限用户的列表来拒绝访问。
  • password(口令管理)
    管理口令变更的策略,主要是在提供验证的修订任务。例如,PAM password规则可以强制用户试图变更口令时
    需要输入的口令的最小长度。
  • session(会话管理)
    session是会话期间的意思,所以session管理的就是用户在这次登录期间,PAM所给予的环境设置。这个类通常用于记录用户登录与注销时的信息。例如,PAM
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值