Linux基础知识(三)

2019-09-23 17:35:02 浏览数 (2)

今天我们来讲一下linux中有关用户登陆信息的一些知识。

首先我们来了解一下,一般的用户的登录信息所存放的位置。

一般来说,linux的用户登录信息存放在以下三个文件中:

utmp 详细路径 :/var/run/utmp

记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记录系统启动时间;

wtmp 详细路径:/var/log/wtmp

记录当前正在登录和历史登录系统的用户信息,默认由last命令查看;

使用last命令进行查看

btmp 详细路径:/var/log/btmp

记录失败的登录尝试信息,默认由lastb命令查看。

使用lastb进行查看

这三个文件都是二进制文件,所以使用普通的cat命令是无法查看和浏览的,只能使用固定的命令。

这三个文件的文件结构是完全相同的,都是由/usr/include/bits/utmp.h文件定义了这三个文件的结构体。

默认情况下文件的日志信息会通过logrotate日志管理工具定期清理。logrotate的配置文件是/etc/logrotate.conf,此处是logrotate的缺省设置,通常不需要对它进行修改。日志文件的轮循压缩等设置存放在独立的配置文件中,它(们)放在/etc/logrotate.d/目录下,它会覆盖缺省设置。

介绍完文件我们现在来介绍刚刚所提及到的命令了。

这些命令是查看刚刚介绍的三个文件。

这些命令分别是:

lastlog、last、lastb、ac、who、w、users、utmpdump 。

1、lastlog

列出所有用户最近登录的信息,或者指定用户的最近登录信息。lastlog引用的是/var/log/lastlog文件中的信息,包括login-name、port、last login time

2、last

刚刚查看wtmp文件用到的指令,

列出当前和曾经登入系统的用户信息,输出的内容包括:用户名、终端位置、登录源信息、开始时间、结束时间、持续时间。注意最后一行输出的是wtmp文件起始记录的时间。

3、lastb

刚刚查看btmp文件用到的指令,

列出失败尝试的登录信息,和last命令功能完全相同。

4、ac

输出所有用户总的连接时间,默认单位是小时。由于ac是基于wtmp统计的,所以修改或者删除wtmp文件都会使ac的结果受影响。

默认系统是没有该命令的,所以需要apt-get来安装一下:

apt-get install acct

5、who

查看当前登入系统的用户信息。who命令比较强大,它既可以读取utmp文件也可以读取wtmp文件,默认没有指定FILE参数时,who查询的是utmp的内容。当然可以指定FILE参数,比如who -aH /var/log/wtmp,则此时查看的是wtmp文件。

我们通过who --help 来查看一下who的使用文档:

root@iZ2ze459u86is1pi87eprdZ:/var/log# 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

--ips print ips instead of hostnames. with --lookup,

canonicalizes based on stored IP, if available,

rather than stored hostname

-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

6、w

查看当前登入系统的用户信息及用户当前的进程(而who命令只能看用户不能看进程)。该命令能查看的信息包括字系统当前时间,系统运行时间,登陆系统用户总数及系统1、5、10分钟内的平均负载信息。后面的信息是用户,终端,登录源,login time,idle time,JCPU,PCPU,当前执行的进程等。

w的信息来自两个文件:用户登录信息来自/var/run/utmp,进程信息来自/proc/.

7、users

显示当前正在登入统的用户名。语法是users [OPTION]... [FILE]。如果未指定FILE参数则默认读取的是/var/run/utmp,当然也可以指定通用相关文件/var/log/wtmp,此时输出的就不是当前用户了。

8、utmpdump

utmpdump用于转储二进制日志文件到文本格式的文件以便查看,同时也可以修改二进制文件!!包括/var/run/utmp、/var/log/wtmp、/var/log/btmp。

语法为:utmpdump [options] [filename]。修改文件实际就可以抹除系统记录,所以一定要设置好权限,防止非法入侵。

显示/var/run/utmp的内容:

utmpdump /var/run/utmp

同样要显示/var/log/wtmp的内容:

utmpdump /var/log/wtmp | tail -15

最后,对于/var/log/btmp:

utmpdump /var/log/btmp

我们还可以使用utmpdump来做一些其他的事情,比如:

检查某个特定用户(如root)的登录次数。

utmpdump /var/log/wtmp | grep root

统计来自IP地址112.64.153.121的登录次数

utmpdump /var/log/wtmp | grep 112.64.153.121

今天的分享就到这里了,下期继续吧!

0 人点赞