如何使用Who命令检查记录的用户信息
Linux中的who命令列出了系统上所有已登录的用户。
使用起来非常简单。
只需在命令行中输入who,它将显示Linux系统上所有当前登录的用户。
Hyman@theitroad:~# who root pts/0 2017-02-03 06:48 (152.72.29.73) john pts/1 2017-02-03 07:02 (187.41.92.90) jane pts/2 2017-02-03 07:02 (252.142.106.85)
请记住,它仅显示当前登录到系统的用户。
还有其他方法可以查看Linux系统上的所有用户,例如compgen。
who命令具有一些选项,可获取有关登录用户的其他特定信息。
在Linux中使用who命令
这是who命令的语法:
who [options] [filename]
我们已经看到了who命令显示的信息,没有任何选项。
现在让我们看看它提供了哪些选项。
打印用户的空闲时间
除了常规信息外,我们还可以打印用户的空闲时间。
如果用户一段时间未输入任何内容,则会反映为空闲时间。
who -u
从下面的输出中可以看到,用户john闲置了2分3秒。
Hyman@theitroad:~# who -u root pts/0 2017-02-03 06:48 . 10669 (152.72.29.73) john pts/2 2017-02-03 07:02 02:03 31528 (187.41.92.90)
我们可以使用此信息做什么?
实际用途是通过自动断开空闲时间超过一定时间的用户来实现添加的安全层。
仅显示用户名(及其数量)
使用-q选项,我们只能显示已记录的用户及其数量。
Hyman@theitroad:~# who -q root john jane # users=3
除了已记录的用户数量外,这与“用户命令”输出相似。
检查是否可以向用户发送即时消息
我们是否知道用户可以使用诸如mesg之类的命令行工具在Linux终端中互相发送消息?
当然,由用户决定他/她是否要接收此类消息。
我们可以使用-T选项检查是否可以向用户发送消息:
who -T
在下面的输出中,+表示是,而–表示否。
如果看到?
,则表示未知。
Hyman@theitroad:~# who -T root - pts/0 2017-02-03 06:48 (152.72.29.73) john + pts/2 2017-02-03 07:02 (187.41.92.90)
显示有关我们自己的信息
有点whoami替代。
它显示用户信息,但仅用于我们自己(即与当前终端关联的用户)。
who -m
检查上次系统启动时间
与uptime命令有点类似,我们可以使用who命令的-b选项获取有关系统上次引导的信息:
who -b
如我们所见,我的测试服务器上次启动时间为2019年12月19日09:41.
Hyman@theitroad:~# who -b system boot 2019-12-19 09:41
打印登录用户的主机名
这可能适用于同一子网中的用户。
使用–lookup选项,我们可以显示已登录用户的主机名。
检查过去的登录信息和错误的登录信息
我们可能知道,在Linux文件系统层次结构中,存储运行时信息和日志。
Who命令从/var/run/utmp获取信息。
我们可以指定其他日志文件以获取不同的信息。
例如,如果使用文件/var/log/wtmp,则可以获取有关过去登录的信息。
Hyman@theitroad:~# who /var/log/wtmp root pts/0 2017-02-03 06:48 (152.72.29.73) jane pts/1 2017-02-03 07:02 (252.142.106.85) john pts/2 2017-02-03 07:02 (187.41.92.90) jane pts/1 2017-02-03 07:12 (252.142.106.85) jane pts/1 2017-02-03 08:55 (252.142.106.85)
同样,我们可以使用/var/log/btmp文件查看所有失败的登录尝试。
Hyman@theitroad:~# who /var/log/btmp
当然,这取决于系统是否配置为记录这些信息。