Linux自学笔记——nsswitch and pam

简介:

 

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,如需转载请自行联系原作者
相关文章
|
5天前
|
Linux
Linux(5)WIFI/BT调试笔记
Linux(5)WIFI/BT调试笔记
21 0
|
6天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
24 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
5月前
|
运维 网络协议 Linux
腾讯T6-9首发“Linux内核源码底层原理开发进阶笔记”,差距不止一点点哦
腾讯T6-9首发“Linux内核源码底层原理开发进阶笔记”,差距不止一点点哦
|
1月前
|
算法 Linux
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
|
5天前
|
Linux Android开发
Linux(6)CH9434 SPI调试笔记
Linux(6)CH9434 SPI调试笔记
13 0
|
22天前
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
38 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境
|
5月前
|
缓存 网络协议 Linux
牛客网论坛最具争议的Linux内核成神笔记,GitHub已下载量已过百万(下)
牛客网论坛最具争议的Linux内核成神笔记,GitHub已下载量已过百万
|
5月前
|
JSON Linux 开发工具
Linux jq 、vim以及LInux集群安装miniconda并配置虚拟环境(笔记)
Linux jq 、vim以及LInux集群安装miniconda并配置虚拟环境(笔记)
58 0
|
1月前
|
Linux 网络安全 开发工具
【Linux笔记】常用的Linux的指令
【Linux笔记】常用的Linux的指令
|
2月前
|
Linux 数据安全/隐私保护 Android开发
10 个最佳 Linux 开源笔记软件
10 个最佳 Linux 开源笔记软件
127 1