nss pam

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nss pam相关的知识,希望对你有一定的参考价值。

nsswitch&PAM认证框架


nsswitch


1.nsswitch:Name Service Switch,名称服务开关;

 名称解析:将人类使用的自然语言的符号转换成计算机能够使用的数字符号


2.应用程序的名称解析流程:

 应用程序  --> nsswitch(配置文件(查询顺序)) --> 对应库文件 --> 解析库 --> 完成解析


3.nsswitch(network services switch 网络服务转换)

 中间层,本质上上是一些库文件。提供了为应用程序向不同的解析库进行名称解析的手段和顺序。

 通用框架:为应用程序提供简洁高效的接口;代理程序;

作用:承上启下;

   承上:提供统一的配置和调用接口;

启下:用户与各种形式的存储进行交互;


在Linux中实现名称解析的通用框架:库

/lib64/libnss*, /usr/lib64/libnss*

技术分享图片

框架:

libnss3.so

驱动(接口):

libnss_files.so, libnss_dns.so, libnss_db.so , ...


4.配置文件:

 /etc/nsswitch.conf


文件的格式:

db: store_format1 store_format2 ....


每种存储中都可以根据查找键进行查找,并且会返回状态;

STATUS => success | notfound | unavail | tryagain


对于每种状态返回值,都有相应的行为(ACTION):

ACTION => return | continue


默认情况下,对于success状态的行为是return;对于其他状态的行为都是continue;


可以自定义状态和行为的关系:

[STATUS=ACTION]

将此项放置于对应的存储格式之后即可;


hosts: files nis [NOTFOUND=return] dns


5.getent命令:

 从某个解析库LIB中获的条目。该命令可以检测nsswitch配置是否正确。

 getent - get entries from Name Service Switch libraries

 getent database [key]


 例如:

  #getent hosts

  #getent passwd

  #getent passwd root

  #getent hosts www.test.com


------------------------------------------------------------------------------------------

pam


pluggable authentication modules;通用的认证框架


1.其功能实现同样通过库;

 模块的存放路径:/lib64/security/*

技术分享图片

2.配置文件:

 全局认证配置文件:/etc/pam.conf

格式:

application type control module-path module-arguments


 为每种应用提供的专用的配置文件:/etc/pam.d/*APP_NAME*

格式:

type control module-path module-arguments


3.配置文件格式详解

 type:

   检查的功能类别,可能使用一个或者多个进行限定认证

auth:与账号的认证和授权有关;

account:与账号的管理相关,但与认证无关的功能;

password:与用户修改密码时密码的复杂度有关的功能;

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


 control:

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

required:如果本条目没有被满足,那么最终本次的认证一定失败;但是本次认证过程并不中断;整个栈运行完毕之后必定返回"认证失败"的信号;具备隐形的一票否决;

requisite:如果本条目没有被满足,那么本次认证一定失败;而且整个栈立即终止并返回"认证失败"信号;显示的一票否决;

sufficient:如果本条目的条件被满足,且本条目之前没有任何的required条目判断为失败,则整个栈立即终止并返回"认证成功"信号;如果本条目的验证失败,还需要继续参考其他的条目规则;一票通过;

optional:可选的,无足轻重的表决;

include:将其他的配置文件中的流程栈包含在当前位置,就好像把其他的配置文件的配置内容复制到当前文件一样;

substack:运行其他配置文件的流程,但与include不同的是,其在子栈中运行,其运行结果不影响主栈;


  返回的状态 status:user_unknown, success, default, ...

  采取的行为 action: ok, N, bad, die, done, ignore, reset, ...


  module-path:模块文件路径;

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

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

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



4.常用到的pam模块

 pam_limits.so

 pam_listfile.so

 pam_time.so


  例如:

 1.pam_limits.so:资源限制

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

 2.修改限制的实现方式:

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

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

   -u        最大用户进程数

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

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

   

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

 技术分享图片

   配置文件:每行一个定义;

   格式:<domain>  <type>  <item>  <value>

   <domain>:应用于哪些对象

     username

     @group

     *:所有用户

   <type>:限制的类型

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

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

     -:软硬使用相同限制;

   <item>:限制的资源类型

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

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

     maxlogins:此用户的最大登录数

    rss:最大驻留集大小(KB)


以上是关于nss pam的主要内容,如果未能解决你的问题,请参考以下文章

即插即用安全验证模块-使用pam模块

CentOS 6通过ldap集成AD域账号(nslcd方式)

LDAP认证客户端自动挂载用户家目录shell脚本配置

Samba集成Ldap认证

ldap认证jupyter notebook

linux 几个逼格高实用的命令