linux配置文件之/etc/nsswitch.conf文件

nsswitch:名称解析服务,可以实现名称解析,包括域名到IP,用户名到UID等;配置文件是/etc/nsswitch.conf,由它规定了通过哪些途径、按照什么顺序以及查找哪些特定类型的信息,还可以指定系统在某个方法生效或者失效时将采取什么动作。配置文件设置着用户(passwd)、口令(shadow)、主机IP和组信息(group)的搜索方式

nsswitch.conf 的每一行都规定了以什么方式进行搜索,其格式:

Info: methoInfo: method[[action]] [method[[action]]...] 
Info:表示该行所描述的信息类型
method:表示搜索信息的方法
action:表示对前面的method返回结果的响应处理
nsswitch.conf的工作原理

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

1、常用Info信息
字段 含义
automount 自动挂载
bootparams 无盘引导选项和其他引导选项
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()函数使用该文件
2、对于每一种信息类型,都可以指定一种或多种方法(method)进行搜索
Method(方法)字段 含义
files: 搜索本地文件,如/etc/passwd和/etc/hosts
nis: 搜索NIS数据库,nis还有一个别名,即yp
dns: 查询DNS(只查询主机)
compat: passwd、group和shadow文件

​ 对一种信息设置多种方法进行搜索时,按照配置的方式从左到右进行搜索,

passwd files nis		#搜索passwd 信息 先查询file对应的本地文件,再搜索nis数据库
host nis files dns      #搜索host信息则是先搜索nis数据库,再搜索file对应的本地文件,仍然失败的话,搜索dns以查找host信息
3、action

每个方法后面都可以选择一个action动作项,用来指定该方法搜索成功或失败后需要进行的处理操作,动作格式是:

[[!]STATUS =action]   # STATUS是待测试的状态,action是如果STATUS匹配到所返回的状态后执行的动作,感叹号!是可选,作用是动作取反
字段 取值及其含义
STATUS NOTFOUND:方法已经执行,但是并没有找到待搜索的值。 默认的动作是continue。
SUCCESS:方法已经执行,并且已经找到待搜索的值,没有返回错误。默认动作是return。
UNAVAIL:方法失败,原因是永久不可用。举例来说,所需的文件不可访问或者所需的服务器可能停机。默认的动作是continue。
TRYAGAIN:方法失败,原因是临时不可用。举例来说,某个文件被锁定,或者某台服务器超载。默认动作是continue。
action return:返回到调用例程,带有返回值,或者不带返回值。
continue:继续执行下一个方法。任何返回值都会被下一个方法找到的值覆盖
4、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文件

posted @ 2022-05-12 18:08  枫叶艾辰  阅读(564)  评论(0编辑  收藏  举报