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

一、什么是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、搜索顺序(从左至右)
       两个或者更多方法所提供的信息可能会重叠。举例来说,filesnis可能都提供同一个用户的口令信息。如果出现信息重叠现象,就需要考虑将哪一种方法作为权威方法(优先考虑),并将该方法放在方法列表中靠左的位置上。
    默认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文件)。


5compat方法:passwdgroupshadow文件中的"±"
    可以在/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文件。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
linux中小企业服务器配置方案(3) 第二章 DNS服务器     第一节 主DNS服务器   & 1.1 简介   域名系统为一个分布式数据库,它使本地负责控制整个分布式数据库的部分段,每 一段中的数据通过客户,服务器模式在整个网络上均可存取,通过采用复制技术和缓存技 术使得整个数据库可靠的同时,又拥有良好的性能.   域名服务器包含数据库的部分段的信息,并可提供被称之为解析器的客户来访问.   DNS的数据库结构形成一个倒立的树状结构,根的名字用空字符串""来表示,但在文本 中用"."来书写.树的每一个节点都表示整个分布式数据库中的一个分区(域),每个域可再 进一步划分成子分区(域),每个域都有一个标签(LABEL),标明了它与父域的关系.域也有 一个域名(domain name),给出它在整个分布式数据库中的位置.在DNS中,域名全称是一个从该域到根的标签 序列,以"."分隔这些标签.该标签最多可包含63个字符.树中每一节点的完整域名为从该 节点到根之间路径上的标签序列.   如果根域在节点的域名中出现,该名字看起来就象以点结尾(实际上是以点和空标签 作结尾).这些以点结尾的域名被称之为绝对域名(Absoulte Domain Name).不以点结尾的域名被称之为相对域名.   域(Domains)即为树状域名空间中的一棵子树,域的域名同该子树根节点的域名一样 .也就是说,域的名字就是该域中最高层节点的名字.举例来说,zhuhai.gd.cn域的顶端就 是名为zhuhai.gd.cn的节点.   在DNS中,每个域分别由不同的组织进行管理.每个组织都可以将它的域再分成一定数 量的子域并将这些子域委托给其他组织进行管理.域既能包括主机又能包括其他域(它的 子域).域名被用做DNS数据库中的索引.子域中任何域名被认为是域的一部分.   事实上,主机即为域,域名仅是DNS数据库中的索引,"主机"可由指向相关主机信息的 域名来索引,域包含所有其域名在该域的主机.   在域名树中,叶节点的域通常代表主机,它们的域名可指向网络地址,硬件信息和邮件 路由信息.在树内的节点,其域名既可命名一台主机,也可指向有关该域的子孙或子域的结 构信息,在域名树中的内部域名并不受唯一性限制,它们既可表示它们所对应的域,又可代 表网络中某台特定的主机.例如,sun.com既是sun的域,又是在sun和internet间转发信件 的邮件服务器的域名.   & 1.2 所需资源    &1.2.1 所需包   RedHat6.2 服务器模式安装    &1.2.2 所需配置文件 /etc/named.conf 系统自带,管理员配置 /etc/hosts 系统自带,管理员配置 /etc/resolv.conf 系统自带,管理员配置 /var/named/name2ip.conf 系统没有,管理员创建 /var/named/ip2name.conf 系统没有,管理员创建 /etc/named.boot 系统自带,不需要修改 /etc/host.conf 系统自带,不需要修改 /etc/nsswitch.conf 系统自带,不需要修改 /var/named/named.local 系统自带,不需要修改 /var/named/named.ca 系统自带,不需要修改    &1.2.3 相关工具 1. nslookup 说明:检测DNS是否配置正确的工具,系统自带。 & 1.3 配置方案  1./etc/named.conf 说明:DNS主配置文件,定义了域数据库信息的基本参数和源点,该 文件可以存放在本地或远程的服务器上。 源文件: options { directory "/var/named"; #定义了named要读写文件的路径 }; zone "." { type hint; #表明在启动时被用来初始化域名服务器的文件 是一个线索文件,每个服务器都有一个线索区。 file "named.ca";#指定所要读取的文件名 }; zone "0.0.127.in-addr.arpa" { type master; #表明服务器是主域名服务器 file "named.local"; }; zone "0.168.192.in-addr.arpa" { # 定义被解释网段 type master; file "ip2name.conf"; }; zone "weboa.com.cn" in { # 被解释的域名 type master; file "name2ip.conf"; };  2./var/named/name2ip.conf 说明:正向解析配置文件,即实现域名到IP的对应 源文件: @ IN SOA . root.. #所有的区文件都以SOA开头,@指

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值