本文作者:优尚网

linux怎么查看用户

优尚网 01-29 51
linux怎么查看用户摘要: Linux系统用户查询全攻略:从入门到精通目录导读Linux用户管理基础概念查看系统用户的核心命令查看当前登录用户信息查看用户组及其成员高级用户查询技巧实战场景应用与问答Linux...

Linux系统用户查询全攻略:从入门到精通

目录导读

Linux用户管理基础概念

在深入探讨如何查看Linux用户之前,我们需要先理解Linux用户管理的基本框架,Linux是一个多用户操作系统,每个用户都拥有唯一的身份标识(UID)和所属的用户组(GID),用户信息主要存储在以下几个关键文件中:

linux怎么查看用户

/etc/passwd文件是用户信息的核心数据库,包含所有用户的基本信息,每行代表一个用户,字段之间用冒号分隔,格式为:用户名:密码占位符:UID:GID:描述信息:家目录:默认shell

/etc/shadow文件则存储加密后的用户密码及密码策略信息,普通用户无读取权限,只有root用户能够访问,这增强了系统安全性。

/etc/group文件记录了用户组信息,每个用户组占据一行,格式为:组名:组密码占位符:GID:组成员列表

理解这些文件的结构和作用,是掌握用户查询命令的基础,当我们在终端执行用户查询命令时,系统实际上是在读取和处理这些文件中的信息。

查看系统用户的核心命令

查看所有用户:/etc/passwd文件解析

最直接查看系统所有用户的方法是查看/etc/passwd文件:

cat /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
...
jxysys:x:1000:1000:jxysys:/home/jxysys:/bin/bash

每一行包含7个字段,以冒号分隔:

  • 字段1:用户名
  • 字段2:密码占位符(x表示密码存储在/etc/shadow中)
  • 字段3:用户ID(UID)
  • 字段4:主组ID(GID)
  • 字段5:用户描述信息(GECOS)
  • 字段6:用户家目录
  • 字段7:默认shell

如果只需要查看用户名列表,可以使用:

cut -d: -f1 /etc/passwd

查看特定用户信息:id命令详解

id命令是查询特定用户信息的强大工具:

# 查看当前用户信息
id
# 查看指定用户信息
id jxysys

输出示例:

uid=1000(jxysys) gid=1000(jxysys) groups=1000(jxysys),4(adm),24(cdrom),27(sudo)

此命令显示用户的UID、主组GID以及用户所属的所有附加组,使用-u参数只显示UID,-g参数只显示主组GID,-G参数显示所有组GID,-n参数将ID转换为名称。

过滤系统用户与普通用户

系统用户(服务账户)通常有较低的UID(一般小于1000),而普通用户的UID从1000开始,可以通过以下方式区分:

# 查看普通用户(UID≥1000)
awk -F: '$3>=1000 && $3<65534 {print $1}' /etc/passwd
# 查看系统用户(UID<1000)
awk -F: '$3<1000 {print $1}' /etc/passwd

查看当前登录用户信息

基础登录查询命令

who命令显示当前登录系统的用户信息:

who

输出显示登录用户名、终端设备、登录时间和IP地址(如果是远程登录)。

w命令提供更详细的信息,包括用户正在执行的进程:

w

输出包含:当前时间、系统运行时间、登录用户数、系统负载,以及每个用户的登录终端、来源IP、登录时间、空闲时间、JCPU、PCPU和当前进程。

查看用户登录历史

last命令显示系统登录历史记录:

last

此命令从/var/log/wtmp文件读取数据,显示用户登录、注销时间和持续时间,使用last -n 10可限制显示最近10条记录。

lastlog命令报告所有用户的最近登录情况:

lastlog

此命令对于检查用户账户活动非常有用,特别是检测长时间未登录的账户。

查看实时用户活动

users命令以简洁格式显示当前登录的用户名:

users

如果需要更详细的实时监控,可以使用watch命令动态观察:

watch -n 5 'who'

此命令每5秒刷新一次who命令的输出。

查看用户组及其成员

查看用户所属组

除了之前提到的id命令,还可以使用groups命令:

# 查看当前用户所属组
groups
# 查看指定用户所属组
groups jxysys

查看组内成员

要查看特定组包含哪些用户,可以查询/etc/group文件:

# 查看所有组信息
cat /etc/group
# 查看特定组成员
grep '^sudo' /etc/group

输出示例:

sudo:x:27:jxysys,admin,user1

这表明sudo组包含jxysys、admin和user1三个用户。

使用getent命令

getent命令从名称服务切换库获取条目,可以查询passwd、group等数据库:

# 获取用户信息
getent passwd jxysys
# 获取组信息
getent group sudo

这种方法优于直接读取文件,因为它考虑了NIS、LDAP等网络用户数据库。

高级用户查询技巧

批量查询与过滤

结合多个命令可以实现强大的过滤功能:

# 查找UID大于1000且shell不是nologin的用户
awk -F: '$3>=1000 && $7!~/\/(nologin|false)$/ {print $1}' /etc/passwd
# 查找家目录不存在的用户
awk -F: '{system("test -d "$6" || echo "$1)}' /etc/passwd

查看用户权限与sudo配置

检查哪些用户拥有sudo权限:

grep -Po '^sudo.+:\K.*$' /etc/group | tr ',' '\n'

或者查看/etc/sudoers文件及其包含的目录:

sudo cat /etc/sudoers
ls -la /etc/sudoers.d/

用户登录监控脚本

创建简单的监控脚本,记录用户登录情况:

#!/bin/bash
# 保存为 user_monitor.sh
LOGFILE="/var/log/user_monitor.log"
echo "=== $(date) ===" >> $LOGFILE
who >> $LOGFILE
echo "登录用户数: $(who | wc -l)" >> $LOGFILE
echo "" >> $LOGFILE

将此脚本加入cron定时任务,即可定期记录用户登录状态。

实战场景应用与问答

Q1:如何快速查看系统中有多少普通用户?

A:可以使用以下命令组合:

# 统计普通用户数量
grep -c '^.*:x:[1-9][0-9]\{3,\}:' /etc/passwd
# 或者
awk -F: '$3>=1000 && $3<65534 {count++} END {print count}' /etc/passwd

Q2:如何查看某个用户最近执行了哪些命令?

A:如果是当前用户的历史命令,可以使用history命令,查看其他用户的命令历史需要相应权限:

# 查看当前用户历史
history
# 查看其他用户历史(需要root权限)
sudo tail -f /home/用户名/.bash_history

.bash_history只记录交互式shell执行的命令,且可能配置了大小限制。

Q3:如何检测系统中是否存在空密码用户?

A:检查空密码用户需要查看/etc/shadow文件:

sudo awk -F: '$2=="!!" || $2=="*" || $2=="" {print $1}' /etc/shadow

空密码或锁定账户在第二个字段会有特殊标记。

Q4:如何查看哪些用户最近修改过密码?

A:/etc/shadow文件的第三个字段记录了上次密码修改时间(从1970年1月1日至今的天数):

sudo awk -F: '$3!="" {print $1, $3}' /etc/shadow | sort -k2 -nr

要转换为可读格式,可以使用更复杂的脚本或命令。

Q5:如何批量导出用户信息报表?

A:可以创建一个脚本批量导出用户信息:

#!/bin/bash
echo "用户名,UID,GID,描述,家目录,Shell" > users_report.csv
awk -F: '{print $1","$3","$4","$5","$6","$7}' /etc/passwd >> users_report.csv

这个脚本会将所有用户信息导出为CSV格式,方便在电子表格中查看和分析。

Q6:如何查看用户家目录的使用情况?

A:结合/etc/passwddu命令可以查看用户家目录磁盘使用情况:

# 为每个用户家目录检查磁盘使用
cut -d: -f6 /etc/passwd | xargs -I {} sudo du -sh {} 2>/dev/null

Q7:网站ww.jxysys.com上的Linux教程与本文有何关联?

A:ww.jxysys.com提供了丰富的Linux系统管理教程,包括用户管理的进阶内容,本文介绍的基础命令和技巧是进一步学习的基础,该网站还提供了实际案例和脚本分享,帮助管理员更高效地管理系统用户。

通过掌握这些Linux用户查看技巧,您将能够高效地管理系统用户,及时发现问题账户,确保系统安全稳定运行,建议定期审查用户账户,特别是检查UID为0的账户(除root外不应存在),以及长时间未登录的账户,这些是系统安全维护的重要环节。

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享