复习linux——PAM认证机制

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.mzph.cn/news/240603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用web_video_server进行网页段的视频传输

引言&#xff1a;在项目中&#xff0c;需要实现无人机摄像头采集到的图像回传到window下进行查看&#xff0c;为此&#xff0c;选择使用web_video_server功能包实现局域网下的图像传输 硬件环境&#xff1a; 硬件&#xff1a;Jetson orin nano 8G D435摄像头 环境&#xff…

电子病历编辑器源码,提供电子病历在线制作、管理和使用的一体化电子病历解决方案

概述&#xff1a; 电子病历是指医务人员在医疗活动过程中,使用医疗机构信息系统生成的文字、符号、图表、图形、数据、影像等数字化信息,并能实现存储、管理、传输和重现的医疗记录,是病历的一种记录形式。 医院通过电子病历以电子化方式记录患者就诊的信息&#xff0c;包括&…

2024年pmp考试还有多久啊?怎么备考?

一般来说每年3、6、9、12月考试&#xff0c;一年四次&#xff0c;具体时间以官网通知为准。报考时间提前2个月报名&#xff0c;2023年的最后一次考试时间是11月&#xff0c;已经截止报名了。所以下一次考试就得等到2024年3月了。 想知道怎么备考先来分析一下现在的“新”考纲&…

npm error code EINTEGRITY 问题的解决方法之一

我在使用 npm install -g gatsby-cli 命令安装 Gatsby 时遇到了 “npm error code EINTEGRITY ” 这个问题。试了一些方法&#xff0c;最后按提示信息找 npm-cache 目录的位置将其删除&#xff0c;解决了问题&#xff0c;在这期间还升级 npm 到了最新的稳定版&#xff08;不知道…

【重点】【DP】322.零钱兑换

题目 法1&#xff1a;动态规划 // 时间复杂度&#xff1a;O(kN) class Solution {public int coinChange(int[] coins, int amount) {int[] dp new int[amount 1];Arrays.fill(dp, amount 1);dp[0] 0;for (int i 1; i < dp.length; i) {for (int coin : coins) {if (…

进程同步与进程互斥-第二十四天

目录 前言 什么是进程同步 什么是进程互斥 四大区 遵循原则 本节思维导图 前言 进程具有异步性&#xff0c;异步性是指&#xff0c;各并发执行的进程以各自独立的、不可预知的速度向前推进&#xff0c;因此为了让进程以我们想要的顺序执行&#xff0c;操作系统引入了“进…

TCP/IP,UDP,DNS,NAT,DHCP,HTTP协议

1.TCP/IP协议 TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础&#xff0c;由网络层的IP协议和传输层的TCP协议组成。通俗而言&#xff1a;TCP负责发现传输的问题&#xff0c;一有问题就发出信号&#xff0c;要求重新传输&#xff0c;直到所有数据安全正确地传…

概率中的50个具有挑战性的问题[03/50]:轻率的陪审员

一、说明 我最近对与概率有关的问题产生了兴趣。我偶然读到了弗雷德里克莫斯特勒&#xff08;Frederick Mosteller&#xff09;的《概率论中的五十个具有挑战性的问题与解决方案》&#xff08;Fifty Challenge Problems in Probability with Solutions&#xff09;一书。我认为…

如何修复concrt140.dll丢失问题,分享4种有效的方法

在计算机使用的过程中&#xff0c;我们经常会遇到一些错误提示或者系统崩溃的情况。其中之一就是“concrt140.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题&#xff0c;我们需要采取一些措施来修复丢失的concrt140.dll文件。本文将介绍五个解决co…

C++ 强制类型转换static_cast<typeName>

C允许通过强制类型转换机制显式地进行类型转换。强制类型转换的格式有两种。 如&#xff1a; 为将存储在变量nData中的int值转换为long类型&#xff0c;可以使用下面的表达式中的一种&#xff1a; (long)nData …

对数函数求导

方法 一般形 复合型 复杂复合型

【编译原理--复习】

知识点整理 第一章 同时伴有表格管理、出错处理 1、词法分析 任务&#xff1a;对构成源程序的字符串进行扫描和分解&#xff0c;识别出单词(如标识符等)符号 输入&#xff1a;源程序 输出&#xff1a;单词符号序列 2、语法分析 任务&#xff1a;根据语言的语法规则对单词符号…

VTK数据结构

只有几何结构没有拓扑结构 #include <vtkSmartPointer.h> #include <vtkPoints.h> #include <vtkPolyData.h> #include <vtkPolyDataWriter.h>int main(int argc, char* argv[]) {// 创建点数据vtkSmartPointer<vtkPoints> points vtkSmartPoin…

数据分析基础之《numpy(5)—合并与分割》

了解即可&#xff0c;用panads 一、作用 实现数据的切分和合并&#xff0c;将数据进行切分合并处理 二、合并 1、numpy.hstack 水平拼接 # hstack 水平拼接 a np.array((1,2,3)) b np.array((2,3,4)) np.hstack((a, b))a np.array([[1], [2], [3]]) b np.array([[2], […

如何在openSUSE上进行远程登录和文件传输, ssh服务开启秘钥和密码认证

ssh服务开启秘钥和密码认证 默认情况下&#xff0c;没有开启密码认证。 解决方案&#xff1a; vim /etc/ssh/sshd_config PermitRootLogin yes #允许root认证登录 PasswordAuthentication yes #允许密码认证RSAAuthentication yes #秘钥认证 PubkeyAuthentica…

drools入门案例

1 业务场景说明 业务场景&#xff1a;消费者在图书商城购买图书&#xff0c;下单后需要在支付页面显示订单优惠后的价格。具体优惠规则如下&#xff1a; 规则编号 规则名称 描述 1 规则一 所购图书总价在100元以下的没有优惠 2 规则二 所购图书总价在100到200元的优惠2…

在服务器上部署SpringBoot项目jar包

以下是在服务器上部署Spring Boot项目jar包的步骤&#xff1a; 打包项目&#xff1a; 使用IDEA或者命令行工具&#xff08;如Maven或Gradle&#xff09;将Spring Boot项目打包为一个可执行的jar文件。如果使用Maven&#xff0c;可以在项目的根目录下运行以下命令来打包项目&…

tampermonkey:Tampermonkey受欢迎的用户脚本管理器油猴

Tampermonkey for Mac是一款用户脚本管理器&#xff0c;主要用于在网页上运行自定义的JavaScript代码&#xff0c;以增强网站的功能和外观。它支持在各种浏览器中使用&#xff0c;包括Chrome、Firefox和Safari等主要浏览器。 以下是Tampermonkey for Mac软件的主要特点&#x…

一款C++编写的数据可视化库Matplot++

它是基于著名的 Matplotlib 库&#xff08;Python 中广泛使用的绘图库&#xff09;构建的&#xff0c;旨在提供类似于 Matplotlib 的功能&#xff0c;但专门为 C 设计。Matplot 支持多种图表类型&#xff0c;包括线图、散点图、条形图、直方图、误差线图等&#xff0c;使数据可…

RocketMQ 入门:MQ 基础概念、集群搭建与高可用配置,消息示例详解

RocketMQ 入门 视频地址&#xff1a; 千锋教育RocketMQ全套视频教程&#xff0c;快速掌握MQ消息中间件 什么是 MQ &#xff1f; Message Queue&#xff08;消息 队列&#xff09;&#xff0c;从字面上理解&#xff1a;首先它是一个队列。FIFO 先进先出的数据结构 —— 队列…