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文件。