Linux自学笔记——nsswitch and pam

本文涉及的产品
运维安全中心(堡垒机),企业双擎版 50资产 7天
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

 

nsswitch:name service switch

       通用框架,与各种类型存储进行交互的公共实现;

       实现:/usr/lib64/libnss*,/lib64/libnss*

              框架:libnss

              驱动:libnss_files-

              1.png

       为每一种用到解析库的应用通过配置定义其位置:

              /etc/nsswitch.conf

                     db: store1   store2  …

              2.png

                     例如:

                     passwd:files

                     hosts:files   dns

              解析库:

                     文件、关系型数据管理系统(mysql)、NIS、LDAP、DNS

              每种存储中的查找结果状态:

                     STATUS => success | not found | unavail | tryagain

              对应与每种状态结果的行为(action):

                     return | continue

              例子:

                     hosts: files nis  [NOTFOUND=return]  dns

              getent命令:

                     getent  DATABASE  [key]

pam:pluggable authentication module

       认证库:存储

              多种类型的存储:文件、关系型数据管理系统、LDAP、NIS

       pam:通用框架,提供了与各种类型存储进行交互的公共实现、以及多种辅助类的功能:

              /lib64/security/*

       配置文件:为各种调用了pam的应用提供其专用配置:

              通用配置文件:/etc/pam.conf,可为每一种调用pam完成认证功能的应用程序提供配置;

              专用配置文件:/etc/pam.d/*,通常专用于为某种特定的应用程序提供配置;

             

              通常每个应用会使用一个单独的配置文件;

       配置文件格式:

              通用配置文件:

                     application    type control          module-path module-arguments

              专用配置文件:

                     type      control         module-path   module-arguments

                     3.png

              type:检查的功能类别

                     auth:账号的认证和授权;

                     account:与账号管理相关的非认证类的功能;

                     password:用户修改密码时密码复杂度检查机制;

                     session:用户获取到服务之前或使用服务完成之后需要进行一些附加性操作;

              control:同一种功能的多个检查之间如何进行组合;

                     两种实现机制:

1)      简单实现:使用一个关键词来定义

2)      详细实现:使用一个或多个“status=action”

简单实现:

required:必须通过检查;否则,即为失败;无论成功还是失败,都需继续由后续同种功能的其它模块进行检查;

requisite:一票否决;检测失败就直接返回失败;检测成功,由后续同种功能的其它模块进行检查;

sufficient:一票通过,检测成功就直接返回成功;检测失败,则由后续同种功能的其它模块进行检查;

optional:可选的,参考性控制机制;

include;调用其他配置文件中的同种功能的检测机制;

                     详细实现:

                            [status1=action1,status2=action2,…]

                                   status:返回状态

                                   action:采取的行为,比如ok,done,die,bad,ignore,…

              module-path:模块文件路径;

                     相对路径:相对于/lib64/security/目录而言;

                     绝对路径:可位于任何可访问路径;

              Module-arguments:模块的专用参数;

模块示例:

       pam_limits.so:资源限制

              在用户级别实现对其可用的资源的限制,例如可打开的文件数量,可运行的进程数量,可用的内存空间;

             

              修改限制的实现方式:

1)      ulimits命令;

2)      配置文件:/etc/security/limits.conf,/etc/security/limits.d/*.conf

4.png

配置文件:每行的定义:

    <domain>    <type>  <item>  <value>

           <domain>:应用于哪些对象

                  username

                  @group

                  *:所有用户

           <type>:限制的类型

                  soft:软限制,普通用户自己可以修改;

                  hard:硬限制,由root用户设定,且通过kernel强制生效;

                  -:软硬使用相同限制;

           <item>:限制的资源类型

                  nofile:所能够同时打开的最大文件数量,默认为1024;

                  nproc:所能够同时运行的进程的最大数量;默认为1024;

ulimit命令;用于调整软限制:

    -n   最多的打开的文件描述符个数;

    -u    最大的用户进程数

    -S    使用‘soft’(软)资源限制

    -H   使用‘hard’(硬)资源限制





本文转自 claude_liu 51CTO博客,原文链接:http://blog.51cto.com/claude666/2052875,如需转载请自行联系原作者
相关文章
|
3月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
220 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
5月前
|
Linux
Linux源码阅读笔记10-进程NICE案例分析2
Linux源码阅读笔记10-进程NICE案例分析2
|
5月前
|
Linux
Linux源码阅读笔记09-进程NICE案例分析1
Linux源码阅读笔记09-进程NICE案例分析1
|
3月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
131 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
5月前
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
147 2
linux笔记 diff及patch的制作与使用
|
5月前
|
安全 Linux 开发者
Linux笔记之ldd命令详解
`ldd`命令是Linux环境下一个非常实用的工具,用于显示一个程序运行时所需的共享库依赖。它帮助开发者和系统管理员快速诊断程序运行问题,特别是在处理"找不到库文件"或者"错误的库文件版本"等错误时。然而,出于安全的考虑,对于不信任的可执行文件,应该慎用 `ldd`命令,可以考虑使用其他工具如 `objdump`。总的来说,懂得如何妥善且安全地使用 `ldd`,对于维护一个稳定和高效的Linux系统来说,是非常重要的。
154 9
|
5月前
|
存储 缓存 编译器
Linux源码阅读笔记06-RCU机制和内存优化屏障
Linux源码阅读笔记06-RCU机制和内存优化屏障
|
5月前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
5月前
|
消息中间件 安全 Java
Linux源码阅读笔记13-进程通信组件上
Linux源码阅读笔记13-进程通信组件上
|
5月前
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作