很多人学 Linux 的时候,查用户第一反应是:
查组:
但在真实环境、尤其是企业内网里,这种方式很多时候并不完整。
因为系统里的用户,未必都存在于本地文件。
这时候,一个经常被忽略的命令就非常好用了:
今天简单聊聊它。
getent 是什么?
getent 全称可以理解为:
作用是:
你可以把它理解成:
它不仅能查:
还能查:
等等。
为什么它比 cat 更实用?
很多人会:
但问题是:
企业环境里,用户未必来自本地。
很多公司会接入:
这意味着:
系统真实用户 ≠ /etc/passwd 里的用户
但:
能查到系统真正能识别的用户。这一点在内网渗透里特别重要。
常见用法
1. 查看所有用户
输出类似:
root:x:0:0:root:/root:/bin/bashwww-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
2. 查看指定用户
3. 查看所有组
4. 查看某个组
输出:
5. 查 DNS
很多人不知道:
其实也能做 DNS 解析。
getent 和 id 的区别
很多初学者容易混。
id
用于查看:
例如:
getent
用于:
更加底层。
一个容易踩坑的地方
很多人会发现:
输出:
后面没有用户名。但:
却显示:
这是因为:
很多用户属于某组,是通过:
里的 gid 指定的。这也是为什么:
比单纯看文件更重要。
渗透测试里为什么常用?
在内网环境中:
经常能直接枚举:
有些机器:
看起来没几个用户。但:
能瞬间多出几十个。这是很多人第一次打 AD 环境时容易忽略的点。
getent 背后其实是 NSS
它真正查询的是:
配置文件:
例如:
passwd: files ldapgroup: files ldaphosts: files dns
意思是:
所以:
其实是系统级别的“统一查询入口”。
总结
很多时候:
只是“看文件”。而:
才是真正在问系统:
这个命令虽然简单,但在:
里都非常实用。属于那种:
的小工具。所以下次再查看用户和用户组的时候记得用getent命令了
getent passwd
getent group sudo