码迷,mamicode.com
首页 > 其他好文 > 详细

nsswitch && pam

时间:2016-04-28 15:36:05      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:nsswitch   pam   

nsswitch & pam:

       nsswitch: name service switch名称服务解析

              名称解析:用户名、组名、主机名、服务名、...

              解析:根据已知的信息(key)查找某存储库,获取其它信息的过程;

                     存储:文件、SQL、NoSQL、LDAP、dns...

                            文件系统接口:系统调用

                            SQL:

                            NoSQL:

                           

通用框架,承上启下

       启下:用于与各种存储进行交互;

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

                                  

实现:库的形式存在

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

              框架:libnss3.so(通用层接口)

              驱动:libnss_files, libnss_db, libnss_dns, ...

                                  

为每种用到解析库的应用程序通过一个配置文件定义其配置:

       /etc/nsswitch.conf

                                  

文件格式:

       db: store1 store2 ...

                                  

每种存储中的根据查找键进行查找的结果状态:

       STATUS => success | notfound | unavail| tryagain

       Success:链接成功

       Notfound:没有找到

       Unavail:未连接(找到服务,但是服务链接不上)

       Tryagain:重试

 

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

       return | continue(返回|继续)

                                         

例子:

hosts:  files nis [NOTFOUND=return]  dns

阐述:对于hosts而言,首先查找的是files,如果files查找到的状态是success,就直接return,后续的nis与dns就不会查找,如果files的状态不是success,查找nis,nis没有发现的话,就直接返回

 

getent命令:(man getent)

       getent - get entries from Name ServiceSwitch libraries从名称服务交换库中获取项

       getent database [key ...]

例如:

[root@bogon~]# getent passwd root
root:x:0:0:root:/root:/bin/bash
[root@bogon~]# getent hosts
127.0.0.1       localhost localhost.localdomainlocalhost4 localhost4.localdomain4
127.0.0.1       localhost localhost.localdomainlocalhost6 localhost6.localdomain6
[root@bogon~]# getent hosts 127.0.0.1或者主机名localhost都会解析出


如果在/etc/nsswitch.conf中的

Hosts filesdns改成hostsdns这样就不会再去hosts文件中查找

还可以改变其默认的行为:

Vim/etc/nsswitch.conf

Hosts files[SUCCESS=continue] dns找到也不显示,

Hosts files[NOTFOUND=return] dns 找不到就返回,除非把hosts文件删除才能进行dns查找

pam:pluggable authentication modules

             

认证功能的通用框架

                    

实现:提供了与各种类型的存储进行交互的通用实现,以及多种辅助类的功能模块;

                     /lib64/security/*

                    

       配置文件:每个基于pam做认证的应用程序都需要有其专用的配置;

                     提供方式:

                            使用单个文件为多种应用提供配置:/etc/pam.conf

                            为每种应用提供一个专用配置文件:/etc/pam.d/APP_NAME(建议使用)

                           

配置文件语法格式

/etc/pam.conf

   程序名称                  类型                   控制机制               使用模块                     模块参数

appliction     type       control     module-path     module-arguments


/etc/pam.d/APP_NAME

                     类型       控制机制       使用模块                     模块参数

          type  control    module-path    module-arguments


                                    

语法:

       type:

              auth:账号的认证和授权;

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

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

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

                    

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

              有两种实现方式:

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

                      (2) 详细实现:使用一个或多个“status=action”进行组合定义;

                                               

简单实现:

       required:必须成功通过,否则,即为失败;无论成功还是失败,都需要参考同种type下的其它定义;

       requiste:必须成功通过,否则,立即返回失败;成功时,还需要参考同种type下的其它定义;

       sufficient:成功立即返回成功,失败时由同种type下其它模块确定;

       optional:可选的;

       include:调用其它配置文件中的同种type的相关定义;

                                                

详细实现:

        [status1=action1,status2=action, ...]

              status:检查结果的返回状态;

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

                                                       

module-path:模块文件路径;

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

       绝对路径:

                                         

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

                                  

模块示例:

pam_shells.so:检查用户的shell程序;

配置文件:/etc/pam.d/sshd

在auth栈的第一行添加:

       auth required   pam_shells.so

注释/etc/pam.d/sshd下面的auth  required   pam_shells.so

useradd –s /bin/cshdocker(让用户使用csh登录系统)

echo docker | passwd--stdin docker

远程使用docker可以正常登录系统

取消注释/etc/pam.d/sshd下面的auth  required   pam_shells.so

远程使用docker登录系统,登录不上去(但是密码并没有出错,)此时可以修改配置文件,注销pam_shells.so的认证,便可以登录

                                                

pam_limits:系统资源分配及控制的模块;

在用户级别实现对其可使用的资源的限制,例如可打开的最大文件数、可同时运行的最大进程数等等;

 

定义或修改资源限制:

        (1)ulimit命令;

        (2)配置文件:

              /etc/security/limits.conf

              /etc/security/limits.d/*.conf

                                                

配置文件格式:

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

                                                

       <domain>:应用于哪些对象;

                     username:一个用户名

                     @group:组内的所有用户(或者一个组名)

                     *:通配符,设定默认值;

                    

                                                              

       <type>:限制的类型

                     soft

                     hard

                     -:即是soft亦是hard

                                                              

       <item>:限制的资源

                     nofile - max number of openfile descriptors

                     nproc - max number ofprocesses

                                                              

ulimit命令:用于临时调整资源的软硬限制或查看,仅root用户能执行;

       ulimit [options]  [限制]

                                                

              选项:

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

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

                     -a        所有当前限制都被报告

                     -b        套接字缓存尺寸

                     -c        创建的核文件的最大尺寸

                     -d        一个进程的数据区的最大尺寸

                     -e        最高的调度优先级(`nice‘)

                     -f        有 shell 及其子进程可以写的最大文件尺寸

                     -i        最多的可以挂起的信号数

                     -l        一个进程可以锁定的最大内存尺寸

                     -m        最大的内存进驻尺寸

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

                     -p        管道缓冲区尺寸

                     -q        POSIX 信息队列的最大字节数

                     -r        实时调度的最大优先级

                     -s        最大栈尺寸

                     -t        最大的CPU时间,以秒为单位

                     -u        最大用户进程数

                     -v        虚拟内存尺寸

                     -x        最大的锁数量


本文出自 “Touch Dream” 博客,请务必保留此出处http://xuelong.blog.51cto.com/10573089/1768561

nsswitch && pam

标签:nsswitch   pam   

原文地址:http://xuelong.blog.51cto.com/10573089/1768561

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!