diff命令的语法如下所示: diff [OPTION]... from-file to-file 常用使用方式如下: # 比较两个文件 diff nsswitch.conf nsswitch.conf.org # 使用 -w 选项,比较时忽略空格 diff -w nsswitch.conf nsswitch.conf.org # 使用 -y 选项,以并排的格式输出两个文件的比较结果 diff -y nsswitch.conf nsswitch.conf.org 使用 -c 选项,以上下对比的格式输出两个文件的比较结果 diff -c nsswitch.conf nsswitch.conf.org
,还可以指定某个方法生效或失效时系统将采取什么动作 nsswitch.conf中的每一行配置都指明了如何搜索信息,每行配置的格式如下: Info: method[[action]] [method[[ 4、如何控制解析顺序 nsswitch.conf文件的搜索顺序是从左到右,对于每一种信息类型,都可以指定下面的一种或多种方法 files 搜索本地文件,如/etc/hosts nis 搜索NIS数据库, 也叫yp dns 查询DNS(只查询主机) compat passwd、group和shadow影子文件中的±语法 修改配置很简单,替换两者顺序即可 # vim /etc/nsswitch.conf 解析顺序是DNS在前,hosts在后,则情况和上面一样 如果配置hosts,DNS配置,且nsswitch解析顺序是hosts在前,DNS在后,则这种是比较好的配置方式,即默认方式 5、小结 在实际应用中,如果hosts文件中有很多内容不方便维护,但又想去掉hosts解析进行dns拦截的效果,就可以仅通过简单修改nsswitch.conf文件来达到目的 See you~ 参考: CentOS
看了一些资料,Linux下还有个/etc/nsswitch.conf,nsswitch全称是network service switch,他是各种类型存储交互的公共实现,实现名称域名解析服务,nsswitch 加载了各种存储的API接口,并以模块方式装载进nsswitch中,程序发起nsswitch的API调用时可自动完成到各存储中查找内容,他规定通过哪些途径以及按照什么顺序通过这些途径来查找特定类型的信息。 文件示例如下, [root@bisal ~]# vi /etc/nsswitch.conf # # /etc/nsswitch.conf # # An example Name Service Switch 文件通常控制着用户(passwd)、口令(shadow)、主机IP和组信息(在group中)的搜索,下图描述了nsswitch.conf文件控制搜索的大多数信息(Info项)的类型, ? 默认nsswitch.conf文件列出的方法并没有动作项,并假设没有信息重叠(正常情况)。在这种情况下,搜索顺序无关紧要:当一种方法失败之后,系统就会尝试下一种方法,只是时间上受到一点损失。
nameserver 183.60.82.98 这里查阅资料了解到,原来 ping 程序解析域名依赖于C库中的函数 gethostbyname() 和 gethostbyaddr(),而这里对应的配置文件 /etc/nsswitch.conf 配置文件 dns 表示使用 /etc/resolv.conf 文件中的 DNS解析地址 nis 表示查询NIS系统的配置信息 root@BJ-CentOS7 ~ # grep hosts /etc/nsswitch.conf hosts 文件中的地址可以正常被 ping 程序解析,问题基本清楚,nslookup 是直接使用 /etc/resolv.conf 中的 DNS 服务器解析域名,而 ping 程序在没有在 /etc/nsswitch.conf 中的 hosts: dns 选项,所以无法解析 /etc/hosts 文件中不存在的解析记录 解决方案: 在 /etc/nsswitch.conf 文件的 hosts 配置项中添加 dns 选项,则可以使用 /etc/resolv.conf 中的 DNS 服务器解析域名,再次测试,可以正常解析域名了 root@BJ-CentOS7 ~ # grep hosts /etc/nsswitch.conf #hosts
我们都知道计算机最喜欢的是数字,而人类喜欢的是语言,所以我们在计算机上运行的进程、定义的用户、端口号、协议、ip地址等都需要转换成数字的形式让计算机明白,在Linux上实现这种功能的框架就是nsswitch 我稍微解释一下,nsswitch就像一个过滤器接口或者说是分类处理装置,我们需要用到名称解析功能时,nsswitch会根据/etc/nsswitch.conf文件中定义的条目,选择这个名称通过对应的解析方式进行解析 大家看到在我们的库文件目录中/lib64/libnss* /usr/lib64/libnss*,nsswitch就是调用这些库来完成不同功能的解析工作的。 如果要更改这种动作那么定义[NOTFOUND=return]就直接返回不再找后面的解析库 系统passwd功能名称解析的一次过程: libnss3.so --> (/etc/nsswitch.conf ) --> libnss_files.so --> /etc/passwd Getent用于通过nsswitch框架解析验证的命令: 好了,nsswitch我们告一段落,接下来我们来说PAM,即Linux
最终找到原因:没有安装winbind,也没有配置/etc/nsswitch.conf 下面分别说明CentOS7和Ubuntu 14.04/16.04下的步骤。 CentOS 7 安装windbind sudo yum install samba-winbind-clients 修改/etc/nsswitch.conf sudo vi /etc/nsswitch.conf 修改hosts,如下图加上wins 修改/etc/samba/smb.conf sudo vi /etc/samba 14.04 安装windbind sudo apt-get install winbind 修改hosts,如下图加上wins sudo vi /etc/nsswitch.conf
通过滥用--chroot选项并操纵nsswitch.conf的加载过程,攻击者可以诱使Sudo加载恶意的共享库,从而获得root权限。 它通过操纵Sudo处理nsswitch.conf的方式滥用--chroot(-R)选项。这使得本地攻击者可以诱骗Sudo加载恶意共享库,获得root访问权限,即使他们不在sudoers文件中。 /CVE-2025-32463.sh验证提权结果id 使用说明基本利用流程该脚本执行以下步骤:创建一个临时工作目录编译恶意共享库设置虚假的chroot环境配置恶意的nsswitch.conf触发Sudo ,指定使用自定义的解析方法echo "passwd: /woot1337" > woot/etc/nsswitch.conf# 复制group文件以保持环境完整性cp /etc/group woot/etc 漏洞利用原理环境准备阶段:创建临时目录避免文件系统污染构建恶意共享库,使用__attribute__((constructor))确保自动执行chroot环境构建:创建woot/etc/nsswitch.conf
最终找到原因:没有安装winbind,也没有配置/etc/nsswitch.conf 下面分别说明CentOS7和Ubuntu14/16下的步骤。 CentOS7 安装windbind sudo yum install samba-winbind-clients 修改/etc/nsswitch.conf sudo vi /etc/nsswitch.conf parameter ‘security’ Ubuntu14 安装windbind sudo apt-get install winbind 修改hosts,如下图加上wins sudo vi /etc/nsswitch.conf
local/nginx/conf/mime.types", O_RDONLY) = ... open("/etc/resolv.conf", O_RDONLY) = ... open("/etc/nsswitch.conf 除了 nginx.conf 等常见的配置文件,我们还可以发现其加载了 nsswitch.conf 等不常见的配置文件,通过研究这些细节,可以让我们更透彻的理解问题。
如果您没有使用上面显示的 FQDN,那么您要消除 sudo 消息的所需要的就是: 127.0.1.1 example_hostname 开启域名服务 在etc/nsswitch.conf文件下 所以该行应如下所示: root@localhost:~# grep hosts /etc/nsswitch.conf hosts: files dns 更多详细信息,请在系统终端中执行 man nsswitch.conf查看。
Oracle may not have read access to /etc/nsswitch.conf file. 对应的方法有: 1. Check permissions on /etc/nsswitch.conf file to ensure group and other have read access. - If necessary change permisions on /etc/nsswitch.conf as follows: chmod 644 /etc/nsswitch.conf
/etc/nsswitch.conf文件删除DNS解析记录导致。 /lib64/libnss_dns.so.2库文件丢失导致无法解析域名。 场景二: /etc/nsswitch.conf文件删除DNS解析记录导致。 检查/etc/nsswitch.conf是否有DNS解析配置。 $ grep hosts /etc/nsswitch.conf 回显信息如下所示,hosts行中未配置DNS选项,导致解析域名时不会读取/etc/resolv.conf,导致域名解析失败。 #hosts: db files nisplus nis dns hosts: files myhostname 打开/etc/nsswitch.conf找到hosts行添加DNS解析
配置 Glibc 尽管 Glibc 在文件 /etc/nsswitch.conf 丢失或损坏的情况下会创建一个默认的,但是我们需要手动该创建文件,因为 Glibc 的默认文件在网络环境下工作时有问题。 运行下面的命令创建一个新文件 /etc/nsswitch.conf: cat > /etc/nsswitch.conf << "EOF" # Begin /etc/nsswitch.conf passwd dns myhostname networks: files protocols: files services: files ethers: files rpc: files # End /etc/nsswitch.conf
dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories RUN apk add --no-cache tzdata # set up nsswitch.conf golang/go/blob/go1.9.1/src/net/conf.go#L194-L275 # - docker run --rm debian:stretch grep '^hosts:' /etc/nsswitch.conf -e /etc/nsswitch.conf ] && echo 'hosts: files dns' > /etc/nsswitch.conf FROM golang:${GO_VER}-alpine golang/go/blob/go1.9.1/src/net/conf.go#L194-L275 # - docker run --rm debian:stretch grep '^hosts:' /etc/nsswitch.conf RUN echo 'hosts: files dns' > /etc/nsswitch.conf FROM golang:${GO_VER}-alpine${ALPINE_VER} as golang
如果输出是空的说明没有配置IP地址 ifconfig查看主机上的网络 cat /etc/hosts查看主机内部IP映射表 cat /etc/resolv.conf查看主机dns服务器配置 cat /etc/nsswitch.conf 在容器内可以查看网络相关的信息 ifconfig查看容器内的网络 cat /etc/hosts查看容器内内部IP映射表 cat /etc/resolv.conf查看容器内dns服务器配置 cat /etc/nsswitch.conf
查看系统解析器配置:cat /etc/nsswitch.conf 确保 hosts 和 dns 选项正确:编辑 /etc/nsswitch.conf 文件,确保 hosts 行包含 dns:hosts
Check for integrity of name service switch configuration file "/etc/nsswitch.conf" passed Post-check Checking if "hosts" entry in file "/etc/nsswitch.conf" is consistent across nodes... Checking file "/etc/nsswitch.conf" to make sure that only one "hosts" entry is defined More than one "hosts" entry does not exist in any "/etc/nsswitch.conf" file Check for integrity of name service switch configuration file "/etc/nsswitch.conf" passed Pre-check for node addition was unsuccessful on all the
与nsswitch一样,也是一个通用框架。只不过是提供认证功能的。
服务器:dropbear dropbearkey 客户端:dbclient dropbear默认使用nsswitch实现名称解析: /etc/nsswitch /lib/libnss_files*
# vi /etc/ssh/sshd_config GSSAPIAuthentication no 3、修改server上nsswitch.conf文件 # vi /etc/nsswitch.conf