首页 > 代码库 > nsswitch与pam

nsswitch与pam

nsswitch:

  Network Service Switch,网络服务转换,让多种应用程序能够灵活实现名称解析的通用框架

  解析库:

    文件、MySQL、NIS、LDAP、DNS


    通用框架,与各存储交互的实现:

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


    配置文件:/etc/nsswitch.conf

      db: store1,store2,...

    每种存储中查找的结果状态:STATUS => success | not found | unavail | tryagain

    对应于每种状态参数的行为:ACTION => return | continue


pam:Pluggable Authentication Module,插入式认证模块

  关于pam的更详细的知识请参考《Linux-pam sag.pdf》,百度网盘中有

  认证库:

    文件、MySQL、NIS、LDAP


    通用框架,与各存储交互的实现,以及多种辅助性功能:

      /usr/lib64/security/,/lib64/security/


    配置文件:/etc/pam.conf

      /etc/pam.d/*.conf

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

      配置文件中每行定义一种检查规则,其格式如下:

        type control module-path module-arguments

    type:检查功能类别,主要有以下几种

      auth:与帐号认证相关的认证和授权检查

      account:与帐号管理相关的非认证功能

      password:用户修改密码时密码检查规则

      session:用户获取到服务之前或使用服务完成之后(还未退出时)要进行的一些附加性操作


    control:同一种功能的多个检查之间如何进行组合。第一个失败了第二个怎么办

      有两种实现机制:

        a) 使用一个关键词来定义。例如sufficient,required,requisite

        b) 使用一或多个"status=action"形式的组合表示


      简单机制:

        required:若第一个规则检查通过,后面的同类规则依然要检查;若第一个规则检查未通过,后面的同类规则依然要检查,但是最终其无法通过检查规则的限制

        requisite:若第一个规则检查通过,后面的同类规则依然要检查;若第一个规则检查未通过,后面的同类规则无须再检查,其拥有一票否决权

        sufficient:若第一个规则检查通过,后面的同类规则无须再检查,其拥有一票通过权;若第一个规则检查未通过,而后面的某个同类规则检查通过,那么其后面的同类规则无须再检查

        optional:可选,其规则仅供参考,通过也可以,不通过也可以,不影响最终结果

        include:包含指定文件中的相同类别的所有规则


      复杂机制:[status1=action1,status2=action2,.....]

        status:返回状态

        action:

          ok:一票通过权

          done

          die:一票否决权

          ignore:可选,其规则仅供参考,通过也可以,不通过也可以,不影响最终结

          bad:我说不过就不过,但是没有一票否决权,后面依然要检查

          reset

    module-path:模块路径

      /lib64/security:此目录下的模块引用时可使用相对路径,否则必须使用绝对路径

    module-arguments:模块参数


模块:

  pam_shells.so

  pam_limits.so

    该模块通过读取配置文件完成用户对系统资源的使用控制

      /etc/security/limits.conf

      /etc/security/limits.d/*

    语法:

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

    <domain>:

      username

      @group

      *:所有用户

    <type>:

      hard:由root设定,通过kernel强制生效

      soft:由用户自行修改,但不能超过hard的限制

      -:hard和soft同时限定

    <item>:

      nofile:所能够同时打开的最大文件数量

      nproc:所能够同时运行的最大进程数量

      msqqueue:使用的POSIX消息队列能够占用的最大内存空间

      sigpending:所能够使用的最大信号数量

    <value>


ulimit命令:

  ulimit -n #:所能够同时打开的最大文件数量

  ulimit -u #:所能够同时运行的最大进程数量

本文出自 “忘情居” 博客,请务必保留此出处http://itchentao.blog.51cto.com/5168625/1924393

nsswitch与pam