源贴:http://blog.csdn.net/waqwn/article/details/51687719

一、什么是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文件。

转载于:https://blog.51cto.com/1364952/1958002

Linux系统下的/etc/nsswitch.conf文件相关推荐

  1. linux系统间拷贝文件,Linux系统下不同机器之间拷贝文件的方法

    在Linux系统下,不同机器上实现文件拷贝 一.将本地文件拷贝到远程机器: scp /home/administrator/news.txt root@192.168.6.129:/etc/squid ...

  2. Linux系统下不同机器之间拷贝文件的方法

    在Linux系统下,不同机器上实现文件拷贝 一.将本地文件拷贝到远程机器: scp /home/administrator/news.txt root@192.168.6.129:/etc/squid ...

  3. Linux系统下生成bit和mcs文件

    第一步:准备工作:蜂鸟E203项目和vivado软件下载到linux系统下 第二步:配置vivado软件快捷方式(有很多种配置的方法,这里建议使用这种) 打开终端,自动加载环境变量:         ...

  4. 【转】Linux系统下不同机器之间拷贝文件的方法

    如下转自:http://langiner.javaeye.com/blog/766168 在Linux系统下,不同机器上实现文件拷贝 一.将本地文件拷贝到远程机器: scp /home/adminis ...

  5. linux总线错误无法删除文件,linux – 系统D-Bus不允许使用conf文件来破坏所有权...

    我正在尝试创建一个在系统总线上运行的守护程序服务,其中从此服务发送和接收的权限应该完全对任何人开放. (安全性不是此服务的关注点).当我尝试使用QtDbus(使用PyQt)注册服务时,我收到此错误:由 ...

  6. Linux系统下的几种终端设备文件

    终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备. 在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种: 1.串行端口终端(/dev/ttySn) ...

  7. Linux系统下如何查看及修改文件读写权限

    查看文件权限的语句: 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些: -rw-rw-r-- 一共有10位数 其中:最前面那个 - 代表的 ...

  8. linux系统下如何解压RAR文件软件rarforlinux

    Linux下rar unrar的安装: 下载地址:http://www.rarlab.com/download.htm 选择RAR 5.10 for Linux,尽量不要选择64位的,因为安装之后会出 ...

  9. 多线程编译与运行linux,Linux系统下多线程程序编译makefile文件

    在Linux下,编译一个多线程的程序命令为: gcc -lpthread -o file file.c 在Linux下,用交叉编译器编译一个在uclinux下运行的多线程程序,makefile文件如下 ...

最新文章

  1. PTA数据结构与算法题目集(中文)7-13
  2. routeros v6.43.2_routeros软路由负载均衡,充分利用带宽,提高效率降低成本
  3. 爬取广州所有停车场数据(Python)(并行加速版本)
  4. 微信小游戏的前端攻城狮玩法
  5. linux添加ssh公钥免密登录
  6. 如何真正实现无提示保存Excel文档
  7. centos 7 安装ntp服务器
  8. CANoe 13 demo 下载和激活-转载
  9. 关于Atmel A5D31平台ALC5640音频芯片的问题记录
  10. OKR教练:为何落地OKR需要复盘?
  11. Linux命令之大文件分割
  12. iOS16新特性及开发适配
  13. 查询rssi指令_无线接收信号强度(RSSI)那些事儿
  14. 2021衡阳田家炳高考成绩查询,衡阳2021高考最高分多少分,衡阳历年高考状元资料...
  15. ros学习(2-2):ros节点创建(python)
  16. 华为手机怎么打开位置服务器,华为手机怎么开启远程定位服务器
  17. FileSystemWatcher 用法
  18. DTW学习(dynamic time warping)——思想、代码实现
  19. 2022年全球市场智能纺织品总体规模、主要生产商、主要地区、产品和应用细分研究报告
  20. openfalcon 组件监控_开源监控解决方案OpenFalcon系列(一)

热门文章

  1. PhotoShop算法原理解析系列 - 像素化---》碎片。
  2. webfocus在移动终端上的应用DEMO
  3. [转载]使用C#的BitmapData
  4. @SkipValidation跳过Struts2validation校验器
  5. 主成分分析(PCA)原理及R语言实现
  6. 基于koajs的web项目构建-心得篇
  7. 根据文件头数据判断文件类型
  8. DB2 catalog
  9. 如何使用PXE 安装 Windows XP +PXE安装XP
  10. BCH社区意见分歧:引领市场VS迎合市场?