• nsswitch & pam


    nsswitch & pam

    nsswitch是名称解析框架服务,pam是认证框架服务

    对主机来说,有两个功能可能用到框架性服务

    1、名称解析:

    name: id

    2、认证服务:验证当前请求获取资源的人或标识,如何进行认证?基于什么认证?

     

    nsswitch: network service switch  网络服务转换,作用是调整网络服务名称解析机制

    解析库:

    文件、MySQL、NIS、LDAP、DNS

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

    配置文件:/usr/lib64/libnss*, /lib64/libnss* 

    
    

    配置文件

    db: store1, store2, ...  //数据库和存储位置

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

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

    例如:host: files nis [NOTFOUND=return] dns   //找host,默认先找files,再找nis,如果nis服务存在,但服务中没这个条目,则返回NOTFOUND,不会找dns,作用:只有nis不可用才找dns,如果没有nis这个服务,也不会找dns

    # getent database [entry]

    pam:pluggable authentication module  插入式认证模块

    pam也是一个通用框架,有自己对应的认证库

    认证库(密码存储位置):

    文件、MySQL、LDAP、NIS

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

    /lib64/security/

    配置文件:/etc/pam.conf

    /etc/pam.d/*.conf

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

    配置文件中每行定义一种检查规则; 

    格式: 

    type      control   module-path    module-arguments

    格式:type control module-path module-arguments

    type:检查功能类别

    auth: 账号的认证和授权

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

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

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

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

    有两种实现机制:

    1、使用一个关键词来定义;例如sufficient,required, requisite;

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

    简单机制:

    • required  //表示本次检查如果成功,起不到决定性作用,继续检查后面的选项,如果检查没成功,结果就过不了,但依然要检查后面几条,
    • requisite  //检查通过,继续后面的检查,检查不通过,一票否决权,后面不再检查,直接返回结果
    • sufficient  //充分条件,检查通过,后续不再检查,直接通过,如果没通过,不起决定性作用,依然检查后面
    • optional  //可选,无论检查是否通过,都不起决定作用,只做参考
    • include   //包含指定文件中同一个类别中的规则的,

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

    status:返回状态

    action: ok, done, die, ignore, bad, reset

    ok:表示检查通过,一票通过权

    done:通过就通过了,但没有一票通过权

    die:一票否决权

    bad:检查不通过,结果不通过,但是继续检查

    ignore:忽略

    module-path: 模块路径

    /lib64/security: 此目录下的模块引用时可使用相对路径;

    module-arguments: 模块参数

    模块:

    (1) pam_shells.so

    (2) pam_limits.so

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

    /etc/security/limits.conf

    /etc/security/limits.d/*

     

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

    <domain>:

    username

    @group

    *: 所有用户

     

    <type>

    soft:用户可以自我调整,但无论如何都不可超过硬限制

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

    -:二者同时限定;

     

    <item>   //对哪类资源做限制

    nofile(num of file): 所能够同时打开的最大文件数量;

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

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

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

     <value>

     

    ulimit -n #:文件数量

    ulimit -u #:进程数量

    练习:

    (1) 限制centos用户只能够在worktime通过ssh远程连接本机;

    (2) 限制只有distro组内的用户可ssh到本机;

  • 相关阅读:
    悬浮按钮
    C语言学习笔记
    python3之环境搭建以及基础语法
    设计模式之单例模式
    浅谈vuex
    用位运算替代js中的常见操作
    浅析Symbol
    egg.js源码解析之render()
    js的事件循环机制和任务队列
    浅谈js异步
  • 原文地址:https://www.cnblogs.com/hanshanxiaoheshang/p/9534716.html
Copyright © 2020-2023  润新知