目录

一、什么是nsswithch.conf(服务搜索顺序)文件呢?

二、nsswitch.conf的工作原理

1、信息(Info)

2、方法(method)

3、搜索顺序(从左至右)

4、动作项([action])

5、compat方法:passwd、group和shadow文件中的"±"


一、什么是nsswithch.conf(服务搜索顺序)文件呢?

nsswitch.conf(name service switch configuration,名字服务切换配置)文件位于/etc目录下,由它规定通过哪些途径以及按照什么顺序以及通过这些途径来查找特定类型的信息,还可以指定某个方法奏效或失效时系统将采取什么动作。

Nsswitch.conf中的每一行配置都指明了如何搜索信息,每行配置的格式如下: 
Info: method[[action]] [method[[action]]...] 
    其中,info指定该行所描述的信息的类型,method为用来查找该信息的方法,action是对前面的method返回状态的响应。action要放在方括号里。

二、nsswitch.conf的工作原理

 当需要提供nsswitch.conf文件所描述的信息的时候,系统将检查含有适当info字段的配置行。它按照从左向右的顺序开始执行配置行中指定的方法。在默认情况下,如果找到期望的信息,系统将停止搜索。如果没有指定action,那么当某个方法未能返回结果时,系统就会尝试下一个动作。有可能搜索结束都没有找到想要的信息。

1、信息(Info)

Nsswitch.conf文件通常控制着用户(在passwd中)、口令(在shadow中)、主机IP和组信息(在group中)的搜索。下面的列表描述了nsswitch.conf文件控制搜索的大多数信息(Info项)的类型。

automount:

自动挂载(/etc/auto.master和/etc/auto.misc)

bootparams:

无盘引导选项和其他引导选项(参见bootparam的手册页)

ethers:

MAC地址

group:

用户所在组(/etc/group),getgrent()函数使用该文件

hosts:

主机名和主机号(/etc/hosts),gethostbyname()以及类似的函数使用该文件

networks:

网络名及网络号(/etc/networks),getnetent()函数使用该文件

passwd:

用户口令(/etc/passwd),getpwent()函数使用该文件

protocols:

网络协议(/etc/protocols),getprotoent()函数使用该文件

publickey:

NIS+及NFS所使用的secure_rpc的公开密钥

rpc:

远程过程调用名及调用号(/etc/rpc),getrpcbyname()及类似函数使用该文件

services:

网络服务(/etc/services),getservent()函数使用该文件

shadow:

映射口令信息(/etc/shadow),getspnam()函数使用该文件

aiases:

邮件别名,sendmail()函数使用该文件

2、方法(method)

下面列出了nsswich.conf文件控制搜索信息类型的方法,对于每一种信息类型,都可以指定下面的一种或多种方法:

files:

搜索本地文件,如/etc/passwd和/etc/hosts

nis:

搜索NIS数据库,nis还有一个别名,即yp

dns:

查询DNS(只查询主机)

compat:

passwd、group和shadow文件中的±语法(参见本节后面的相关内容)

3、搜索顺序(从左至右)

两个或者更多方法所提供的信息可能会重叠。举例来说,files和nis可能都提供同一个用户的口令信息。如果出现信息重叠现象,就需要考虑将哪一种方法作为权威方法(优先考虑),并将该方法放在方法列表中靠左的位置上。
    默认nsswitch.conf文件列出的方法并没有动作项,并假设没有信息重叠(正常情况)。在这种情况下,搜索顺序无关紧要:当一种方法失败之后,系统就会尝试下一种方法,只是时间上受到一点损失。如果在方法之间设置了动作,或者重叠的项的内容不同,那么搜索顺序就变得重要起来。
例如下面两行nsswitch.conf文件配置行:
passwd files nis
host nis files dns
       第一行让系统在/etc/passwd文件中搜索口令信息,如果失败的话,就使用NIS来查找信息。如果正在查找的用户同时出现在这两个地方,就会使用本地文件中的信息,因此它就是权威信息。第二行先使用NIS搜索;如果失败的话,就搜索/etc/hosts文件;如果再次失败的话,核对DNS以找出主机信息。

4、动作项([action])

在每个方法后面都可以选择跟一个动作项,用来指定如果由于某种原因该方法成功抑或失败需要做些什么。动作项的格式如下:
[[!]STATUS =action]
    其中,开头和末尾的方括号属于格式的一部分,并不是用来指出括号中的内容是可选的。STATUS(按照约定使用大写字母,但本身并不区分大小写)是待测试的状态,action是如果STATUS匹配前面的方法所返回的状态将要执行的动作。开头的感叹号(!)是可选的,其作用是将状态取反。

STATUS:

STATUS的取值如下:

NOTFOUND:方法已经执行,但是并没有找到待搜索的值。 默认的动作是continue。

SUCCESS:方法已经执行,并且已经找到待搜索的值,没有返回错误。默认动作是return。

UNAVAIL:方法失败,原因是永久不可用。举例来说,所需的文件不可访问或者所需的服务器可能停机。默认的动作是continue。

TRYAGAIN:方法失败,原因是临时不可用。举例来说,某个文件被锁定,或者某台服务器超载。默认动作是continue。

action:

action的取值如下:

return:返回到调用例程,带有返回值,或者不带返回值。

continue:继续执行下一个方法。任何返回值都会被下一个方法找到的值覆盖。

示例:

举例来说,下面这行取自nsswitch.conf文件,它的作用是让系统首先使用DNS来搜索给定主机的IP地址。DNS方法后面的动作项是测试该方法所返回的状态是否为“非(!)UNAVAIL”。

hosts    dns [!UNAVAIL=return] files

如果DNS方法没有返回UNAVAIL(!UNAVAIL),也就是说DNS返回SUCCESS、NOTFOUND或者TRYAGAIN,那么系统就会执行与该STATUS相关的动作(return)。其结果就是,只有在DNS服务器不可用的情况下才会使用后面的方法(files)。

如果DNS服务器并不是不可用(两次否定之后就是“可用”),那么搜索返回域名或者报告未找到域名。只有当服务器不可用的时候,搜索才会使用files方法(检查本地的/etc/hosts文件)。

5、compat方法:passwd、group和shadow文件中的"±"

可以在/etc/passwd、/etc/group和/etc/shadow文件中放入一些特殊的代码,(如果在nsswitch.conf文件中指定compat方法的话)让系统将本地文件和NIS映射表中的项进行合并和修改。
    在这些文件中,如果在行首出现加号'+',就表示添加NIS信息;如果出现减号'-',就表示删除信息。举例来说,要想使用passwd文件中的这些代码,可以在nsswitch.conf文件中指定passwd: compat。然后系统就会按照顺序搜寻passwd文件,当它遇到以+或者 开头的行时,就会添加或者删除适当的NIS项。
    虽然可以在passwd文件的末尾放置加号,在nsswitch.conf文件中指定passwd: compat,以搜索本地的passwd文件,然后再搜寻NIS映射表,但是更高效的一种方法是在nsswitch.conf文件中添加passwd: file nis而不修改passwd文件。

linux 服务搜索顺序文件 /etc/nsswitch.conf 简介相关推荐

  1. Linux系统下的/etc/nsswitch.conf文件

    源贴:http://blog.csdn.net/waqwn/article/details/51687719 一.什么是nsswithch.conf(服务搜索顺序)文件呢? nsswitch.conf ...

  2. Linux杂谈之nsswitch.conf配置文件

    一.前言 2020年12月23日同事反馈打不开网站,QQ正常,初步怀疑是DNS故障,经排查为114.114.114.114 DNS问题,更换为移动DNS(211.142.211.124)后网络恢复正常 ...

  3. linux yum配置文件 yum.conf 简介

    yum的配置一般有两种方式:   一种是直接配置/etc目录下的yum.conf文件, 另外一种是在/etc/yum.repos.d目录下增加.repo文件.  一.yum的配置文件yum.conf ...

  4. linux服务篇-DNS服务

    DNS(Domain Name System,域名系统),在TCP/IP网络中有非常重要的地位,能够提供域名与IP地址的解析服务,简单的说,域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的 ...

  5. Linux下Web服务器应用之基础简介

    Linux下Web服务器应用之基础简介 一.web服务器基本知识: WWW 是 World Wide Web 的缩写 URL:<协定>://<主机地址或主机名>[:port]/ ...

  6. nsswitch.conf文件详解

     一.nsswithch.conf:服务搜索顺序     文件/etc/nsswitch.conf(name service switch configuration,名字服务切换配置)规定通过哪些途 ...

  7. linux 管理 服务,Linux服务管理 详述

    一 服务的分类与简介 1 服务的分类 Linux服务包含RPM包默认的安装服务和源码包安装的服务,RPM包默认安装的服务又分为独立的服务和基于xinetd服务,独立的服务相当于直接在内存中,只要用到这 ...

  8. linux etc 服务启动脚本,linux 服务脚本启动问题

    对于使用了 systemd 的系统,所有的 service 服务都会默认转为 systemd 服务之后再由 systemd 来执行,转换之后,你也可以直接使用 systemd 来执行了(它的用户工具就 ...

  9. java linux 服务_java项目部署Linux服务器几种启动方式总结经验

    一:两种部署包: 部署之前先说下两种包,java项目部署到服务器一般有用war包的,也有用jar包的,微服务spring-cloud普及后大部分打包都是jar,部署之前先搞清楚自己要打war包还是ja ...

最新文章

  1. 企业部署Windows 8 Store 风格应用
  2. 2019-04-28 Mybatis generator逆向工程生成的Example代码分析
  3. Unity3D_(游戏)2D坦克大战 像素版
  4. 滤波器的优点_声光可调谐滤波器
  5. mysql 对部分表binlog_MySQL抑制binlog日志中的binlog部分
  6. android表白代码大全,微信表白代码汇总:
  7. 某计算机房空气调节系统设计,空气调节工程思考题习题答案(精品DOC)
  8. oracle报03113,一条SQL查询,报ora-03113的错误,请高手分析
  9. 【计算机三级网络技术】 快速求出IP地址块经聚合后的IP地址
  10. javascript设置网页快捷键
  11. 做APM领域德国队,笃信技术和极简体验的听云打造历程
  12. kubebuilder自定义资源
  13. WordPress批量修改数据库内文章内容文字关键字标题
  14. 阿里巴巴2014校园招聘算法题
  15. [转]Assembly Manifest 通俗简易手册
  16. Qt+ffmpeg+avilib实现录屏录音的功能(包含合成)
  17. STK轨道文件导入OPNET
  18. 关于CTRL+Z失效的问题
  19. ulimit -c unlimited生成core文件
  20. Android课设——理财小助手

热门文章

  1. VS2003 找不到IsProcessInJob()
  2. 泛型技巧系列:简单类型选择器
  3. 远程计算机无法操作,Win10系统下qq远程不能控制对方电脑(点不动)的完全解决方法...
  4. eclipse jsp 写 js 代码提示_基于jsp+servlet的宠物管理系统
  5. U-Boot的启动信息和命令使用
  6. VirtualBox安装Ubuntu详细过程
  7. Altium Designer中如何仅显示顶层的元件和顶层布线
  8. nosql ( redis 跟 memcache )的区别
  9. matlab-高数 find 找到集合中特定元素的位置
  10. 我的Android进阶之旅------gt;怎样在多个LinearLayout中加入分隔线