复习linux——PAM认证机制

news/2024/10/18 20:21:30/

PAM只关注如何为服务验证用户的API,通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开
PAM提供了对所有服务进行认证的中央机制,适用于本地登陆,远程登陆,系统管理员通过PAM配置文件来定制不同应用程序的不同认证策略。

PAM相关文件

包名:pam
模块文件目录:/lib64/security/*.so
特定模块相关的设置文件:/etc/security
应用程序调用PAM模块的配置文件
主配置文件:/etc/pam.conf  一般不使用主配置
为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP_NAME
注:若/etc/pam.d存在,/etc/pam.conf将失效

查看程序是否支持PAM

ldd 'which sshd' | grep libpam

ldd命令

ldd命令全称为list dynamic dependencies(列出动态依赖)。它可以用来显示一个可执行文件或者共享库(动态链接库)所依赖的共享库。
命令格式:ldd [选项] <可执行文件或共享库>
输出:
=> 文件路径:正常找到并链接。
=> not found:未找到该库文件。
=> version mismatch:版本不匹配。
=> incompatible:与可执行文件或其他库不兼容。
=> symbol not found:找不到某个符号。

PAM工作原理

PAM认证一般遵循这样的顺序:Service(服务)->PAM(配置文件)->pam_*.so
PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件进行安全认证(位于/lib64/security)

PAM配置文件格式说明

配置文件格式

通用配置文件/etc/pam.conf格式,此格式不使用
application    type    control     module-path     arguments
专用配置文件/etc/pam.d格式
type   control    module-path    arguments
注:修改PAM配置文件将马上生效

说明

application:服务名

type:模块类型

control:PAM该如何处理与该服务相关的PAM模块的成功或失败情况

required:一票否决,表明本模块必须返回成功才能通过认证,若失败则等同一type中的所有模块全部执行完毕,再将失败结果返回给应用程序
requisite:一票否决,该模块必须返回成功才能通过认证,若失败则不再则同一type中所有模块不再执行
sufficient:一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其他模块,但返回失败则忽略,优先于required和requisite
optional:表明模块是可选的,他的成功与否不会对身份认证起关键作用
include:调用其他的配置文件中定义的配置信息

module-path:本模块对应的程序文件的路径名

Auth账号的认证和授权
Account账户的有效性,与账号管理相关的非认证类的功能
Password用户修改密码时密码复杂度检查机制等功能
Session用户会话期间的控制
-type表示因为缺失而不能加载的模块将不记录到系统日志

Arguments:用来传递给模块的参数

debug:该模块应当用syslog将调试信息写入到系统日志文件中
no_warn:表明该模块不应把警告信息发送给应用程序
use_first_pass:该模块不能提示用户输入密码,只能从前一个模块的到输入密码
try_first_pass:该模块首先用一个模块从用户的到密码,如果该密码验证不能通过,再提示用户输入新密码
use_mapped_pass:该模块不能提示用户输入密码,而是使用映射过的密码
expose_account:允许该模块显示用户的账号名等信息,一般只能在安全的环境下使用

常用PAM模块

pam模块文档说明:/usr/share/doc/pam-*

pam_nologin.so模块
功能:如果/etc/nologin文件存在,将导致非root用户不能登陆,当该用户登陆时,会显示/etc/nologin文件内容,并拒绝登陆
pam_limits.so模块
功能:在用户级别实现对其可使用的资源的限制
pam_google_authenticator模块
功能:实现SSH登陆的两次身份验证,先验证APP的数字码,在验证root用户的密码,都通过才可登陆

ulimit命令

ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制
ulimit的设定值是per-process,每个进程有自己的limits值
使用ulimit进行修改,立即生效
ulimit只影响shell进程及其子进程,用户登出后失效,可以在profile中加入ulimit的设置,做到永久生效

配置文件

pam_limit的设定基于per-process的
/etc/security/limits.conf
/etc/security/limits.d/*.conf

配置文件格式
<domain>    <type>    <item>     <value>
说明
应用于对象
Username 单个用户   @group组内所有用户  *所有用户   %仅用于限制maxlogins limit

限制的类型
soft  软限制,普通用户自己可以修改
Hard  硬限制,由root用户设定,仅通过kernel强制生效
-   二者同时限定

限制的资源
nofile 所能够同时打开的最大文件数量
nproc 所能够同时运行的进程的最大数量


http://www.ppmy.cn/news/1279058.html

相关文章

高级数据结构 <二叉搜索树>

本文已收录至《数据结构(C/C语言)》专栏&#xff01; 作者&#xff1a;ARMCSKGT 目录 前言正文二叉搜索树的概念二叉搜索树的基本功能实现二叉搜索树的基本框架插入节点删除节点查找函数中序遍历函数析构函数和销毁函数(后序遍历销毁)拷贝构造和赋值重载(前序遍历创建)其他函数…

【音视频】Mesh、Mcu、SFU三种框架的总结

目录 三种网络场景介绍 【Mesh】 【MCU】(MultiPoint Control Unit) 【SFU】(Selective Forwarding Unit) 三种网络架构的优缺点 Mesh架构 MCU架构(MultiPoint Control Unit) SFU架构(Selective Forwarding Unit) 总结 参考文章 三种网络场景介绍 【Mesh】 Mesh架构…

<JavaEE> 网络编程 -- 网络编程和 Socket 套接字

目录 一、网络编程的概念 1&#xff09;什么是网络编程&#xff1f; 2&#xff09;网络编程中的基本概念 1> 收发端 2> 请求和响应 3> 客户端和服务端 二、Socket套接字 1&#xff09;什么是“套接字”&#xff1f; 2&#xff09;Socket套接字的概念 3&…

word导入导出-Apache POI 和 Poi-tl

word 文件读取 使用Apache POI Word 进行读取文件 使用poi 时如果报ClassNotFoundException 等错误&#xff0c;请注意请求以下maven 文件的版本 Apache POI Word 说明文档&#xff1a;Apache POI Word 说明文档 maven 解决依赖冲突教程&#xff1a;https://www.cnblogs.com/…

Dockerfile巩固:阅读解析nginx的Dockerfile

目录 Nginx的Dockerfile解析 Nginx的Dockerfile 下面是nginx的Dockerfile文件&#xff0c;我们来阅读巩固下dockerfile的知识 FROM alpine:3.5LABEL maintainer"NGINX Docker Maintainers <docker-maintnginx.com>"ENV NGINX_VERSION 1.12.1RUN GPG_KEYSB0F4…

算法通关村第十关—数组中第K大的数字(白银)

数组中第K大的数字 LeetCode215数组中的第K个最大元素。给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第k个最大的元素&#xff0c;而不是第k个不同的元素。 示例1&#xff1a; 输入&#xff1a;[3,2,1,5,6,4]和k2 输出&…

百年东芝“瞄准”汽车「芯」机遇

在汽车“新四化”大变革的驱动下&#xff0c;汽车半导体市场进入需求暴涨的新周期。 “智能电动汽车所需要的半导体种类和数量正在急剧增加。” 东芝电子分立器件应用技术部经理成栋表示&#xff0c;东芝电子正在加大汽车半导体市场的布局&#xff0c;从而满足汽车电动化、智能…

k8s启动docker容器Error: Could not find or load main class ${start-class}报错

前行提要&#xff1a; 今天部署采集点服务&#xff08;docker项目&#xff09;发现报这个错误。 提出假设&#xff1a; 1&#xff0c;配置文件错误&#xff08;工程需要配置的东西比较多&#xff09; 之后开始一一排查&#xff0c;发现配置有问题&#xff0c;但是不是这个错误…