当前位置:首页>Linux>Linux 下一个被低估的命令:getent

Linux 下一个被低估的命令:getent

  • 2026-10-11 10:20:52
Linux 下一个被低估的命令:getent

很多人学 Linux 的时候,查用户第一反应是:

cat /etc/passwd

查组:

cat /etc/group

但在真实环境、尤其是企业内网里,这种方式很多时候并不完整。

因为系统里的用户,未必都存在于本地文件。

这时候,一个经常被忽略的命令就非常好用了:

getent

今天简单聊聊它。


getent 是什么?

getent 全称可以理解为:

get entries

作用是:

从系统数据库中读取信息

你可以把它理解成:

Linux 的统一查询接口

它不仅能查:

  • 用户
  • 用户组

还能查:

  • DNS
  • hosts
  • services
  • protocols

等等。


为什么它比 cat 更实用?

很多人会:

cat /etc/passwd

但问题是:

企业环境里,用户未必来自本地。

很多公司会接入:

  • LDAP
  • Active Directory
  • SSSD
  • Winbind

这意味着:

系统真实用户 ≠ /etc/passwd 里的用户

但:

getent passwd

能查到系统真正能识别的用户。这一点在内网渗透里特别重要。


常见用法

1. 查看所有用户

getent passwd

输出类似:

root:x:0:0:root:/root:/bin/bashwww-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

2. 查看指定用户

getent passwd root

3. 查看所有组

getent group

4. 查看某个组

getent group sudo

输出:

sudo:x:27:user1,user2

5. 查 DNS

很多人不知道:

getent hosts google.com

其实也能做 DNS 解析。


getent 和 id 的区别

很多初学者容易混。

id

用于查看:

某个用户属于哪些组

例如:

id www-data

getent

用于:

从系统数据库查询信息

更加底层。


一个容易踩坑的地方

很多人会发现:

getent group users

输出:

users:x:100:

后面没有用户名。但:

id baksteen

却显示:

groups=100(users)

这是因为:

/etc/group 不会显示“主组用户”

很多用户属于某组,是通过:

/etc/passwd

里的 gid 指定的。这也是为什么:

getent

比单纯看文件更重要。


渗透测试里为什么常用?

在内网环境中:

getent passwd

经常能直接枚举:

  • 域用户
  • LDAP 用户
  • AD 用户

有些机器:

cat /etc/passwd

看起来没几个用户。但:

getent passwd

能瞬间多出几十个。这是很多人第一次打 AD 环境时容易忽略的点。


getent 背后其实是 NSS

它真正查询的是:

NSS(Name Service Switch)

配置文件:

/etc/nsswitch.conf

例如:

passwd: files ldapgroup:  files ldaphosts:  files dns

意思是:

  • 用户先查本地
  • 再查 LDAP
  • hosts 先查本地再查 DNS

所以:

getent

其实是系统级别的“统一查询入口”。


总结

很多时候:

cat /etc/passwd

只是“看文件”。而:

getent passwd

才是真正在问系统:

“你到底认识哪些用户?”

这个命令虽然简单,但在:

  • Linux 运维
  • 内网渗透
  • AD 环境
  • 故障排查

里都非常实用。属于那种:

知道以后会越来越常用

的小工具。所以下次再查看用户和用户组的时候记得用getent命令了

getent passwd

getent group sudo

最新文章

随机文章