在Linux系统中,管理员经常需要查看系统中的所有用户信息,以进行权限管理、安全审计或故障排查,Linux用户信息主要存储在/etc/passwd
文件中,该文件记录了每个用户的基本属性,如用户名、用户ID(UID)、主目录、默认Shell等,通过结合其他命令和工具,可以获取更详细的用户信息,如用户组、登录状态、活动记录等,以下是几种常用的查看所有用户的命令及其详细说明。

查看/etc/passwd
文件
/etc/passwd
是Linux系统存储用户信息的核心文件,每行代表一个用户,字段以冒号分隔,格式为:用户名:密码占位符:UID:GID:用户描述:主目录:默认Shell
,使用cat
或less
命令可以查看文件内容:
cat /etc/passwd
或
less /etc/passwd
输出示例:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
x
表示密码存储在/etc/shadow
文件中,UID为0的是超级用户,UID小于1000的通常是系统用户。

使用getent
命令
getent
命令查询系统配置数据库(如/etc/passwd
),支持多种命名服务(如LDAP、NIS),查看所有用户:
getent passwd
该命令的优势是可以显示通过网络服务(如LDAP)管理的用户,而不仅仅是本地文件中的用户。
查看/etc/shadow
文件(需root权限)
/etc/shadow
文件存储用户的加密密码和密码策略信息,字段包括:用户名:加密密码:最后修改日期:最小密码有效期:最大密码有效期:警告期:非活跃期:账户过期日期
,仅root可访问:
sudo cat /etc/shadow
root:$6$abc123...:18632:0:99999:7:::
daemon:*:18632:0:99999:7:::
或表示用户被锁定或无密码。

查看活跃用户
结合last
或who
命令可以查看当前登录的用户:
who
输出示例:
user1 pts/0 2023-10-01 10:00 (192.168.1.100)
user2 pts/1 2023-10-01 11:30 (192.168.1.101)
last
命令则显示最近的登录记录:
last
使用awk
或cut
提取特定字段
若仅需要用户名列表,可通过awk
或cut
处理/etc/passwd
:
awk -F: '{print $1}' /etc/passwd
或
cut -d: -f1 /etc/passwd
用户信息对比表
命令 | 功能 | 权限要求 | 输出示例 |
---|---|---|---|
cat /etc/passwd |
查看所有用户基本信息 | 普通用户 | root:x:0:0:root:/root:/bin/bash |
getent passwd |
查询系统数据库中的用户 | 普通用户 | user1:x:1000:1000::/home/user1:/bin/bash |
sudo cat /etc/shadow |
查看密码和策略信息 | root | user1:$6$abc123...:18632:0:99999:7::: |
who |
查看当前登录用户 | 普通用户 | user1 pts/0 2023-10-01 10:00 (192.168.1.100) |
相关问答FAQs
Q1: 如何区分系统用户和普通用户?
A1: 在/etc/passwd
中,系统用户的UID通常小于1000(如UID=0为root),普通用户UID大于或等于1000,可通过以下命令筛选:
awk -F: '$3 >= 1000 {print $1}' /etc/passwd # 普通用户 awk -F: '$3 < 1000 {print $1}' /etc/passwd # 系统用户
Q2: 如何查看某个用户所属的所有组?
A2: 使用groups
命令或查看/etc/group
文件:
groups username # 显示用户所属组 grep username /etc/group # 显示组详细信息