0 前言
2024年的网络安全检查又开始了,对于使用基于Linux的国产电脑,我们可以编写一个脚本来收集系统的有关信息。比如,我们可以使用who命令来收集当前已登陆系统的用户信息,当前运行级别等信息。
1. who命令 的功能、格式和选项说明
我们可以使用命令 who --help 来查看who命令的帮助信息。
[purpleendurer @ bash ~] ++who --help++
Usage: who [OPTION]... [ FILE | ARG1 ARG2 ]
Print information about users who are currently logged in.
-a, --all same as -b -d --login -p -r -t -T -u
-b, --boot time of last system boot
-d, --dead print dead processes
-H, --heading print line of column headings
-l, --login print system login processes
--lookup attempt to canonicalize hostnames via DNS
-m only hostname and user associated with stdin
-p, --process print active processes spawned by init
-q, --count all login names and number of users logged on
-r, --runlevel print current runlevel
-s, --short print only name, line, and time (default)
-t, --time print last system clock change
-T, -w, --mesg add user's message status as +, - or ?
-u, --users list users logged in
--message same as -T
--writable same as -T
--help display this help and exit
--version output version information and exit
If FILE is not specified, use /var/run/utmp. /var/log/wtmp as FILE is common.
If ARG1 ARG2 given, -m presumed: 'am i' or 'mom likes' are usual.
GNU coreutils online help: <http://www.gnu.org/software/coreutils/\>
Report who translation bugs to <http://translationproject.org/team/\>
For complete documentation, run: info coreutils 'who invocation'
1.1 who命令的功能
显示当前已登录的用户信息。
1.2 who命令的格式
who [选项]... [ 文件 | 参数1 参数2 ]
1.3 who命令的选项说明
选项 | 描述 |
---|---|
-a --all | 等于-b -d --login -p -r -t -T -u 选项的组合 |
-b --boot | 上次系统启动时间 |
-d --dead | 显示已死的进程 |
-H --heading | 输出头部的标题列 |
--ips | 打印 IP 而不是主机名。使用 --lookup,根据存储的 IP(如果可用)进行规范化,而不是存储的主机名 |
-l --login | 显示系统登录进程 |
--lookup | 尝试通过 DNS 查验主机名 |
-m | 只显示和标准输入有直接交互的主机和用户 |
-p --process | 显示由 init 进程衍生的活动进程 |
-q --count | 列出所有已登录用户的登录名与用户数量 |
-r --runlevel | 显示当前的运行级别 |
-s --short | 只显示名称、线路和时间(默认) |
-t --time | 打印上次系统时钟更改 |
-T -w --mesg | 用+,- 或 ? 标注用户消息状态 |
-u --users | 列出已登录的用户 |
--message | 等于-T |
--writable | 等于-T |
--help | 显示此帮助信息并退出 |
--version | 显示版本信息并退出 |
如果未指定 文件,请使用 /var/run/utmp。 /var/log/wtmp 作为 文件 很常见。
如果给出 参数1 参数2,则 -m 假定:"am i"或"mom likes"是常见的。
2 who命令使用实例
2.1 who -b 显示上次系统启动时间。
[purpleendurer @ bash ~] ++who -b++
系统引导 2024-05-27 17:33
[purpleendurer @ bash ~]
2.2 who -l:显示系统登录进程
[purpleendurer @ bash ~] ++who -l++
登录 ttyAMA0 2024-05-27 09:33 1710 id=AMA0
登录 tty1 2024-05-27 09:33 1708 id=tty1
命令返回了6列信息,分别是什么含义呢?我们可以使用-H 选项来了解。
2.3 who -H -l:显示标题行及系统登录进程
[purpleendurer @ bash ~] ++who -l -H++
名称 线路 时间 空闲 进程号 备注
登录 ttyAMA0 2024-05-27 09:33 1710 id=AMA0
登录 tty1 2024-05-27 09:33 1708 id=tty1
这下我们知道每列信息的含义了吧?
2.4 who -H -m:只显示标题行及和标准输入有直接交互的主机和用户
[purpleendurer @ bash ~] ++who -m -H++
名称 线路 时间 备注
gxxc pts/0 2024-05-27 23:02 (:0)
[purpleendurer @ bash ~]
2.5 who -q:只显示标题行及和标准输入有直接交互的主机和用户
[purpleendurer @ bash ~] ++who -q++
root purpleendurer
用户数=2
2.6 who -r:显示当前的运行级别
[purpleendurer @ bash ~] ++who -r++
运行级别 5 2024-05-27 09:33
[purpleendurer @ bash ~]
说明:在传统的Linux系统中,运行级别可以分为以下几类:
- 0级:关机 - 所有进程都将被终止,系统被关闭。
- 1级:单用户模式 - 仅允许一个用户登录系统,通常用于系统维护或恢复。
- 2级:多用户模式,不带NFS - 多个用户可以登录系统,但网络文件系统(NFS)不可用。
- 3级:多用户模式,文本模式 - 这是一个完全的多用户模式,支持网络功能,但通常只提供命令行界面,没有图形界面。
- 4级:未定义 - 在某些系统中,这个级别可能用于定义自定义的运行模式。
- 5级:多用户模式,图形界面 - 类似于级别3,但提供了图形用户界面(GUI),允许用户使用图形界面登录和操作系统。
- 6级:重启 - 系统将重新启动。
2.7 who -w -H:用+,- 或 ? 标注用户消息状态
[purpleendurer @ bash ~] ++who -w -H++
名称 线路 时间 备注
boot + tty7 2024-05-27 09:33 (:0)
purpleendurer + pts/0 2024-05-27 23:02 (:0)
[purpleendurer @ bash ~]
2.8 who am i -H:显示当前用户信息
[purpleendurer @ bash ~] who am i -H
名称 线路 时间 备注
purpleendurer pts/0 2024-05-27 23:02 (:0)
[purpleendurer @ bash ~]
2.9 who -u -H:列出已登录的用户
[purpleendurer @ bash ~] ++who -u -H++
名称 线路 时间 空闲 进程号 备注
root tty7 2024-05-27 09:33 old 2428 (:0)
purpleendurer pts/0 2024-05-27 23:02 . 30989 (:0)
[purpleendurer @ bash ~]
其中第4列是闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串。
2.10 显示所有信息
[purpleendurer @ bash ~] ++who -a -H++
名称 线路 时间 空闲 进程号 备注 退出
系统引导 2024-05-27 17:33
登录 ttyAMA0 2024-05-27 09:33 1710 id=AMA0
登录 tty1 2024-05-27 09:33 1708 id=tty1
运行级别 5 2024-05-27 09:33
root tty7 2024-05-27 09:33 old 2428 (:0)
purpleendurer pts/0 2024-05-27 23:02 . 30989 (:0)
[purpleendurer @ bash ~]