13.5.3 【Linux】PAM 模块设置语法

这篇具有很好参考价值的文章主要介绍了13.5.3 【Linux】PAM 模块设置语法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PAM 借由一个与程序相同文件名的配置文件来进行一连串的认证分析需求。我们同样以passwd 这个指令的调用 PAM 来说明好了。 当你执行 passwd 后,这支程序调用 PAM 的流程是:

1. 使用者开始执行 /usr/bin/passwd 这支程序,并输入密码;

2. passwd 调用 PAM 模块进行验证;

3. PAM 模块会到 /etc/pam.d/ 找寻与程序 (passwd) 同名的配置文件;

4. 依据 /etc/pam.d/passwd 内的设置,引用相关的 PAM 模块逐步进行验证分析;

5. 将验证结果 (成功、失败以及其他讯息) 回传给 passwd 这支程序;

6. passwd 这支程序会根据 PAM 回传的结果决定下一个动作 (重新输入新密码或者通过验证)

下面是/etc/pam.d/passwd 这个配置文件的内容:

13.5.3 【Linux】PAM 模块设置语法,Linux,linux,服务器,运维

在这个配置文件当中,除了第一行宣告 PAM 版本之外,其他任何“ # ”开头的都是注解,而每一行都是一个独立的验证流程, 每一行可以区分为三个字段,分别是验证类别(type)、控制标准(flag)、PAM的模块与该模块的参数。

你会发现在我们上面的表格当中出现的是“ include (包括) ”这个关键字,他代表的是“请调用后面的文件来作为这个类别的验证”, 所以,上述的每一行都要重复调用/etc/pam.d/system-auth 那个文件来进行验证的意思。

第一个字段:验证类别 (Type)

验证类别主要分为四种,分别说明如下:

auth 是 authentication (认证) 的缩写,所以这种类别主要用来检验使用者的身份验证,这种类别通常是需要密码来检验的, 所以后续接的模块是用来检验使用者的身份。

account account (帐号) 则大部分是在进行 authorization (授权),这种类别则主要在检验使用者是否具有正确的使用权限, 举例来说,当你使用一个过期的密码来登陆时,当然就无法正确的登陆了。

session session 是会议期间的意思,所以 session 管理的就是使用者在这次登陆 (或使用这个指令) 期间,PAM 所给予的环境设置。 这个类别通常用在记录使用者登陆与登出时的信息!例如,如果你常常使用 su 或者是 sudo 指令的话, 那么应该可以在/var/log/secure 里面发现很多关于 pam 的说明,而且记载的数据是“session open,session close”的信息。

password password 就是密码。所以这种类别主要在提供验证的修订工作,举例来说,就是修改/变更密码。

这四个验证的类型通常是有顺序的,不过也有例外就是了。 会有顺序的原因是,(1)我们总是得要先验证身份 (auth) 后, (2)系统才能够借由使用者的身份给予适当的授权与权限设置 (account),而且(3)登陆与登出期间的环境才需要设置, 也才需要记录登陆与登出的信息 (session)。如果在运行期间需要密码修订时,(4)才给予 password 的类别。

第二个字段:验证的控制旗标 (control flag)

required 此验证若成功则带有 success (成功) 的标志,若失败则带有 failure 的标志,但不论成功或失败都会继续后续的验证流程。 由于后续的验证流程可以继续进行,因此相当有利于数据的登录 (log) ,这也是 PAM 最常使用 required 的原因。

requisite 若验证失败则立刻回报原程序 failure 的标志,并终止后续的验证流程。若验证成功则带有 success 的标志并继续后续的验证流程。 这个项目与 required 最大的差异,就在于失败的时候还要不要继续验证下去?由于 requisite 是失败就终止, 因此失败时所产生的 PAM 信息就无法通过后续的模块来记录了。

sufficient 若验证成功则立刻回传 success 给原程序,并终止后续的验证流程;若验证失败则带有 failure 标志并继续后续的验证流程。 这玩意儿与 requisits 刚好相反。

optional 这个模块控制项目大多是在显示讯息而已,并不是用在验证方面的。

如果将这些控制旗标以图示的方式配合成功与否的条件绘图,会有点像下面这样:

                                           13.5.3 【Linux】PAM 模块设置语法,Linux,linux,服务器,运维

                                            图13.5.2、PAM 控制旗标所造成的回报流程

程序运行过程中遇到验证时才会去调用 PAM ,而 PAM 验证又分很多类型与控制,不同的控制旗标所回报的讯息并不相同。 如上图所示, requisite 失败就回报了并不会继续,而sufficient 则是成功就回报了也不会继续。 至于验证结束后所回报的信息通常是“succes 或failure ”而已,后续的流程还需要该程序的判断来继续执行才行。文章来源地址https://www.toymoban.com/news/detail-609930.html

到了这里,关于13.5.3 【Linux】PAM 模块设置语法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Linux命令修改服务器时间及设置时区

    在服务器管理和维护中,准确的系统时间对于保证服务器正常运行和数据一致性至关重要。 而有时候,我们可能需要手动修改服务器上的系统时间,以调整时区、修复时间漂移等问题。 本文将介绍如何使用Linux命令来修改服务器时间。 一、检查当前时间 首先,我们需要使用

    2024年02月21日
    浏览(64)
  • Linux系统管理、服务器设置、安全、云数据中心

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家 :https://www.captainbed.cn/z chatgpt体验地址 本文以服务器最常用的CentOS为例 解释每个字符的含义如下: [:表示命令行提示符的开始。 root:表示当前用户为root用户。 @:表示分隔符,用于

    2024年02月04日
    浏览(54)
  • (Windows )本地连接远程服务器(Linux),免密码登录设置

    在使用VScode连接远程服务器时,每次打开都要输入密码,以及使用ssh登录或其它方法登录,都要本地输入密码,这大大降低了使用感受,下面总结了免密码登录的方法,用起来巴适得很,起飞。 本地必须在PowerShell终端操控,如下: 打开终端后在终端输入以下命令: 回车再回

    2024年02月11日
    浏览(55)
  • linux服务器ubuntu定时任务cron设置每秒执行

    后端的同学经常会遇到在服务器做一些定时脚本处理,比如定时清理日志,定时请求某个接口做特殊的业务处理,大多数linux版本都会带cron服务,以ubuntu服务器做个示例。 cron 是一个在 Unix-like 操作系统中用于定时执行任务的工具。它是 “Chronos”(希腊语,意为时间)的缩写

    2024年02月02日
    浏览(57)
  • linux服务器 tcp高并发压测需要设置项

    linux服务器部署了一个tcp服务,需要进行并发压力测试  看看服务器能支持多少个tcp长连接   预计会有50w个连接 需要设置linux 不然是无法支持这么多连接的   如果达到这个值是无法建立新连接的  报错信息一般为  too many open files   1 ,  fs.file-max linux系统能打开的文件句柄

    2024年04月10日
    浏览(39)
  • 在linux服务器中对R语言中for循环设置多核运行

    在R中构建了for循环,由于循环过多,运行速度过慢,且不同循环之间是并行关系,拟通过多核运行可以解决此问题。 b.sh 应以 nohup 运行,防止网络断掉 多核运行: 1、https://www.cnblogs.com/ywliao/articles/6681781.html/ 2、https://blog.csdn.net/u012252959/article/details/116201536 OPENBLAS_NUM_THREAD 1、

    2024年02月08日
    浏览(36)
  • 【Linux服务器】 .bashrc设置永久环境变量后不起作用的问题

            在使用vi打开.bashrc文件以后设置环境变量         然而发现设置了以后不起作用。这时候可以在终端界面使用export命令查看当前所有的PATH变量,我的情况是只出现了一条,别的都没有,这就说明在配置环境变量的过程中有一条配置语句将其他的PATH变量全部覆

    2024年02月02日
    浏览(48)
  • 阿里云服务器linux部署nginx-(阿里云服务器端口打不开解决方法-防火墙和安全组设置)

    ( 1 ) nginx官网 下载最新版本安装包: nginx: download (2)或者直接wget命令下载 如果有报错:   验证nginx是否启动 # 查看端口号被哪个进程占用 netstat -ntlp | grep 80 # 查看防火墙开放端口 firewall-cmd --zone=public --list-ports # 若防火墙关闭,检查防火墙状态,开启防火墙 systemctl sta

    2024年04月09日
    浏览(53)
  • Linux PAM和AppArmor

    PAM全称叫作Pluggable Authentication Modules,译为可插拔验证模块。1995年起源于sun公司,PAM是一个框架,通过PAM框架提供的接口,应用程序可以不关心基层具体的实现过程,直接调用接口实现身份验证功能。 PAM还有一个功能就是在用户空间就是先对用户的资源进行限制。 PAM不是L

    2024年02月06日
    浏览(41)
  • Linux开发:PAM3 Ubuntu(22.04)安装PAM开发库

    Ubuntu22.04默认是不带pam开发库的,需要通过以下命令进行安装 sudo apt install libpam0g-dev 关于PAM的文档可以参考: Ubuntu Manpage: pam - Pluggable Authentication Modules Library 也可以通过man进行查看: man 3 pam  编译程序是需要加入的头文件: #include security/pam_appl.h #include security/pam_modules.h #i

    2024年02月19日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包