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 ...]

例如:

[[email protected]~]# getent passwd root
root:x:0:0:root:/root:/bin/bash
[[email protected]~]# getent hosts
127.0.0.1       localhost localhost.localdomainlocalhost4 localhost4.localdomain4
127.0.0.1       localhost localhost.localdomainlocalhost6 localhost6.localdomain6
[[email protected]~]# 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        最大的锁数量

nsswitch && pam

时间: 2024-08-10 17:17:22

nsswitch && pam的相关文章

nsswitch&PAM认证框架

一.nsswitch概述 1.nsswitch:network/name  service  switch nsswitch网路名称服务解析是通用框架,与各种类型存储进行交互的公共模块化实现: 实现:/usr/lib64/libnss*,/lib64/libnss* 框架模块:libnss:驱动模块:libnss_files- 2.配置文件:/etc/nsswitch.conf (1)格式 为每一种用到解析库的应用通过配置定义其位置,格式======解析库: store1  store2  -=

nss pam

nsswitch&PAM认证框架 nsswitch 1.nsswitch:Name Service Switch,名称服务开关: 名称解析:将人类使用的自然语言的符号转换成计算机能够使用的数字符号 2.应用程序的名称解析流程: 应用程序  --> nsswitch(配置文件(查询顺序)) --> 对应库文件 --> 解析库 --> 完成解析 3.nsswitch(network services switch 网络服务转换) 中间层,本质上上是一些库文件.提供了为应用程序向

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

tcp_wrapper、sudo、nsswitch、pam

下面介绍的是服务与安全管理的tcp_wrapper.sudo.nsswitch.pam 一.tcp_wrapper 1.tcp_wrapper基础 --------------------tcp封装器 tcp_wrapper依赖的库文件:libwrap.so (1).判断是否受tcp_wrapper访问控制:动态链接(libwrap.so库文件).静态链接(strings命令) 动态链接至libwrap.so库的应用程序:# ldd /PATH/TO/APP_FILE | grep libwra

Linux自学笔记——nsswitch and pam

nsswitch:name service switch 通用框架,与各种类型存储进行交互的公共实现: 实现:/usr/lib64/libnss*,/lib64/libnss* 框架:libnss 驱动:libnss_files- 为每一种用到解析库的应用通过配置定义其位置: /etc/nsswitch.conf db: store1   store2  - 例如: passwd:files hosts:files   dns 解析库: 文件.关系型数据管理系统(mysql).NIS.LDAP.

rsyslog、nsswitch、pam

rsyslog: 日志:历史事件日志历史事件:时间,事件事件级别(日志级别):事件的关键性程度: 事件:系统引导启动.应用程序启动.应用程序尤其是服务类应用程序运行过程中的一些事件:系统日志服务:syslog:syslogd: systemklogd:kernel 事件格式较为简单时,可统一由syslog进行记录:事件产生的日期时间 主机 进程[pid] :事件内容 支持C/S架构:可通过UDP或TCP协议提供日志记录服务: rsyslog:rsyslogd 特性:多线程:UDP,TCP,SSL

pam之基础知识和常见模块

nns负责名称解析,认证的过程是pam来处理.2套系统是独立运行的. 认证本身也可以不借用nss,自己去找对应的解析库. 以用户登陆为例:    用户名的解析 :        USERNAME--> nsswitch.conf --> passwd : file--> /etc/passwd 密码的解析:        PASSWORD --> nsswitch.conf --> shadow : file --> /etc/shadow 认证:        USE

Linux运维 第三阶段 (十三)nss&pam

Linux运维第三阶段(十三)nss&pam 一.nss(network service switch网络服务转换) authentication(认证,决定用户的用户名和密码是否能通过检验) authorization(授权,决定用户是否能访问某服务) audition(审计) username-->UID groupname-->GID http-->80port FQDN-->IP(hosts文件,DNS,mysql,NIS(networkinformation se

FTP基于PAM和MySQL/MariaDB实现虚拟用户访问控制

前言 vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序,特点是小巧轻快,安全易用,目前在开源操作系统中常用的FTP套件主要有proftpd.pureftp.ServU和wu-ftpd等.本文将讲解vsftpd的基本功能和如何基于PAM和MySQL/MariaDB实现虚拟用户访问控制. 基础配置介绍 工作原理 状态响应码 1xx:信息码 2xx:成功状态码 3xx:进一步提示补全信息的状态码 4xx:客户端错误 5xx:服务器端错误 用户认证 虚拟用户:仅用于访问某特定服务中的资源