13.5.4 【Linux】常用模块简介

简介: 13.5.4 【Linux】常用模块简介

登陆所需要的PAM流程:

上面这个表格当中使用到非常多的 PAM 模块,每个模块的功能都不太相同,详细的模块情报可以在你的系统中找到:

/etc/pam.d/*:每个程序个别的 PAM 配置文件;


/lib64/security/*:PAM 模块文件的实际放置目录;


/etc/security/*:其他 PAM 环境的配置文件;


/usr/share/doc/pam-*/:详细的 PAM 说明文档。


pam_securetty.so: 限制系统管理员 (root) 只能够从安全的 (secure) 终端机登陆;那什么是终端机?例如 tty1, tty2 等就是传统的终端机设备名称。那么安全的终端机设置呢? 就写在 /etc/securetty 这个文件中。


pam_nologin.so: 这个模块可以限制一般使用者是否能够登陆主机之用。当 /etc/nologin这个文件存在时,则所有一般使用者均无法再登陆系统了!若 /etc/nologin 存在,则一般使用者在登陆时, 在他们的终端机上会将该文件的内容显示出来!所以,正常的情况下,这个文件应该是不能存在系统中的。 但这个模块对 root 以及已经登陆系统中的一般帐号并没有影响。


pam_selinux.so: SELinux 是个针对程序来进行细部管理权限的功能。


pam_console.so: 当系统出现某些问题,或者是某些时刻你需要使用特殊的终端接口(例如 RS232 之类的终端连线设备) 登陆主机时, 这个模块可以帮助处理一些文件权限的问题,让使用者可以通过特殊终端接口 (console) 顺利的登陆系统。


pam_loginuid.so: 我们知道系统帐号与一般帐号的 UID 是不同的!一般帐号 UID 均大于 1000 才合理。 因此,为了验证使用者的 UID 真的是我们所需要的数值,可以使用这个模块来进行规范。


pam_env.so: 用来设置环境变量的一个模块,如果你有需要额外的环境变量设置,可以参考 /etc/security/pam_env.conf 这个文件的详细说明。


pam_unix.so: 这个模块可以用在验证阶段的认证功能,可以用在授权阶段的帐号授权管理, 可以用在会议阶段的登录文件记录等,甚至也可以用在密码更新阶段的检验。


pam_pwquality.so: 可以用来检验密码的强度!包括密码是否在字典中,密码输入几次都失败就断掉此次连线等功能,都是这模块提供的! 最早之前其实使用的是pam_cracklib.so 这个模块,后来改成 pam_pwquality.so 这个模块,但此模块完全相容于 pam_cracklib.so, 同时提供了 /etc/security/pwquality.conf 这个文件可以额外指定默认值。


login 的 PAM 验证机制流程是这样的:


1. 验证阶段 (auth):首先,(a)会先经过 pam_securetty.so 判断,如果使用者是 root时,则会参考 /etc/securetty 的设置; 接下来(b)经过 pam_env.so 设置额外的环境变量;再(c)通过 pam_unix.so 检验密码,若通过则回报 login 程序;若不通过则(d)继续往下以 pam_succeed_if.so 判断 UID 是否大于 1000 ,若小于 1000则回报失败,否则再往下 (e)以 pam_deny.so 拒绝连线。


2.授权阶段 (account):(a)先以 pam_nologin.so 判断 /etc/nologin 是否存在,若存在则不许一般使用者登陆; (b)接下来以 pam_unix.so 及 pam_localuser.so 进行帐号管理,再以 (c) pam_succeed_if.so 判断 UID 是否小于 1000 ,若小于 1000 则不记录登录信息。(d)最后以 pam_permit.so 允许该帐号登陆。


3. 密码阶段 (password):(a)先以 pam_pwquality.so 设置密码仅能尝试错误 3 次;(b)接下来以 pam_unix.so 通过 sha512, shadow 等功能进行密码检验,若通过则回报login 程序,若不通过则 (c)以 pam_deny.so 拒绝登陆。


4. 会议阶段 (session):(a)先以 pam_selinux.so 暂时关闭 SELinux;(b)使用pam_limits.so 设置好使用者能够操作的系统资源; (c)登陆成功后开始记录相关信息在登录文件中; (d)以 pam_loginuid.so 规范不同的 UID 权限;(e)打开pam_selinux.so 的功能。


依据验证类别 (type) 来看,然后先由 login 的设置值去查阅,如果出现“ includesystem-auth ” 就转到 system-auth 文件中的相同类别,去取得额外的验证流程就是了。然后再到下一个验证类别,最终将所有的验证跑完! 就结束这次的 PAM 验证。


例题:为什么 root 无法以 telnet 直接登陆系统,但是却能够使用 ssh 直接登陆?


答:一般来说, telnet 会引用 login 的 PAM 模块,而 login 的验证阶段会有 /etc/securetty 的限制! 由于远端连线属于 pts/n (n 为数字) 的动态终端机接口设备名称,并没有写入到 /etc/securetty, 因此 root 无法以 telnet 登陆远端主机。至于 ssh 使用的是 /etc/pam.d/sshd 这个模块, 你可以查阅一下该模块,由于该模块的验证阶段并没有加入 pam_securetty ,因此就没有/etc/securetty 的限制!故可以从远端直接连线到服务器端。

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
1月前
|
Unix 关系型数据库 MySQL
Linux 简介
Linux 简介
44 2
Linux 简介
|
2月前
|
Linux Docker 容器
Linux的namespace和cgroups简介
本文介绍了Linux的Namespace技术和cgroups,解释了它们如何帮助实现容器的隔离和资源限制。
104 7
Linux的namespace和cgroups简介
|
2月前
|
Unix Linux 网络安全
python中连接linux好用的模块paramiko(附带案例)
该文章详细介绍了如何使用Python的Paramiko模块来连接Linux服务器,包括安装配置及通过密码或密钥进行身份验证的示例。
97 1
|
1月前
|
大数据 Linux 开发工具
【Linux】命令简介------迅速掌握Linux命令
【Linux】命令简介------迅速掌握Linux命令
|
2月前
|
编解码 Linux 开发工具
Linux平台x86_64|aarch64架构RTMP推送|轻量级RTSP服务模块集成说明
支持x64_64架构、aarch64架构(需要glibc-2.21及以上版本的Linux系统, 需要libX11.so.6, 需要GLib–2.0, 需安装 libstdc++.so.6.0.21、GLIBCXX_3.4.21、 CXXABI_1.3.9)。
|
3月前
|
NoSQL Linux Android开发
内核实验(三):编写简单Linux内核模块,使用Qemu加载ko做测试
本文介绍了如何在QEMU中挂载虚拟分区、创建和编译简单的Linux内核模块,并在QEMU虚拟机中加载和测试这些内核模块,包括创建虚拟分区、编写内核模块代码、编译、部署以及在QEMU中的加载和测试过程。
210 0
内核实验(三):编写简单Linux内核模块,使用Qemu加载ko做测试
|
3月前
|
负载均衡 应用服务中间件 Linux
在Linux中,常用的 Nginx 模块有哪些,常来做什么?
在Linux中,常用的 Nginx 模块有哪些,常来做什么?
|
3月前
|
安全 Linux 开发者
在Linux中,内核模块是什么以及如何加载和卸载它们?
在Linux中,内核模块是什么以及如何加载和卸载它们?
|
3月前
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
|
3月前
|
Linux
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战
下一篇
无影云桌面