openEuler实践:为什么whereis -b passwd还会找到/etc/passwd

举报
yd_214130845 发表于 2026/10/15 09:23:30 2026/10/15
【摘要】 通过一次真实openEuler实验比较which passwd、whereis passwd和whereis -b passwd的输出,解释PATH搜索与相关文件定位的差别,避免把/etc/passwd误当成可执行程序,并给出只读核查顺序。

从一个容易误读的输出说起

在一次 openEuler 文件检索实验中,我用 passwd 比较了 which 和 whereis。最值得记住的现象不是命令拼写,而是:whereis -b passwd 的输出里也出现了 /etc/passwd。如果只凭参数里的“binary”就把所有结果认作可执行程序,排查方向很容易跑偏。

本次实验的实际记录

下面只保留命令与结果,省略实验账号、网络地址和提示符。

which passwd
/usr/bin/passwd

whereis passwd
passwd: /usr/bin/passwd /etc/passwd

whereis -b passwd
passwd: /usr/bin/passwd /etc/passwd

这是本次实验环境的观察结果,其他发行版、软件版本或搜索目录可能得到不同输出。这里没有记录 whereis --version,因此不把这三行推广为所有 openEuler 版本的固定行为。

两个工具回答的不是同一个问题

which passwd 适合先回答“在当前 PATH 中能找到哪个 passwd 程序”。GNU which 的说明是按 PATH 里的目录查找可执行文件或脚本;默认通常只返回第一个匹配项,-a 可以查看多个匹配。参考:GNU which 手册(Debian 发布的原始手册),https://manpages.debian.org/trixie/gnu-which/which.1.en.html

whereis passwd 更适合回答“哪些常见位置存在这个命令名关联的文件”。它的目标包括程序、源码和手册,搜索范围包含标准位置,也会考虑 PATH、MANPATH。-b 限定程序搜索类别,-m 用于手册,-s 用于源码,-l 可以显示实际搜索路径。具体语义应以本机手册为准。参考:util-linux 的 whereis 官方手册源文件,https://kernel.googlesource.com/pub/scm/utils/util-linux/util-linux/+/refs/tags/v2.41.1/misc-utils/whereis.1.adoc

实际结果 应怎样理解
/usr/bin/passwd passwd 命令程序的路径
/etc/passwd 系统账户信息文件;同名不意味着它是可执行程序
passwd: whereis 输出的查询名称前缀,不是路径的一部分

本次 whereis -b 返回 /etc/passwd,说明不能仅凭结果属于“程序搜索类别”就断言文件本身是二进制程序。输出是一组路径候选,文件身份仍要独立核实。也不应将 /etc/passwd 当成“passwd 的源代码”。

遇到类似输出,可以怎样继续确认

以下是可在自己的环境执行的只读核查步骤,不是上面实验已经执行的结果:

# 查看命令解析、搜索范围和文件类型
type passwd
command -v passwd
whereis -l
ls -l /usr/bin/passwd /etc/passwd
file /usr/bin/passwd /etc/passwd

type 和 command -v 能帮助判断 shell 是否先解析到别名、函数或其他形式。ls -l 用来查看权限与链接,file 帮助判断文件内容类型。若系统没有 file,先用现有命令核查,不必为这次比较安装额外软件。不要为了“试一下路径”去执行账户信息文件,也没有必要把它的内容贴进公开文章。

一个适合日常排查的顺序

  1. 想知道命令从哪里被找到,先检查当前 shell 的解析结果与 PATH。
  2. 想找相关程序、源码或说明文档,再使用 whereis,并按需要缩小类别。
  3. 当多个路径同名时,检查文件类型、权限和链接,不按名字猜身份。
  4. 记录系统版本、工具版本和实际输出,使后来的人能够解释差异。

这次实验让我修正了一个细节:检索结果的分类与文件的真实类型需要分开判断。先明确自己是在找“当前命令”还是“相关文件”,比机械地记住两个命令的定义更有用。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。