Linux基础知识(三)

640?wx_fmt=gif

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

640?wx_fmt=png

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

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

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

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

640?wx_fmt=png

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

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

使用last命令进行查看

640?wx_fmt=png

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

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

640?wx_fmt=png

使用lastb进行查看

640?wx_fmt=png

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

640?wx_fmt=png

这三个文件的文件结构是完全相同的,都是由/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

640?wx_fmt=png

2、last 

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

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

640?wx_fmt=png

3、lastb

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

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

640?wx_fmt=png

4、ac

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

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

apt-get install acct

640?wx_fmt=png

640?wx_fmt=png

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

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

6、w

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

640?wx_fmt=png

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

7、users

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

640?wx_fmt=png

8、utmpdump

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

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

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

utmpdump /var/run/utmp

640?wx_fmt=png

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

utmpdump /var/log/wtmp | tail -15

640?wx_fmt=png

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

utmpdump /var/log/btmp

640?wx_fmt=png

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

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

utmpdump /var/log/wtmp | grep root

640?wx_fmt=png

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

utmpdump /var/log/wtmp | grep 112.64.153.121

640?wx_fmt=png

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

听说有气质的人都会关注这个公众号!

640?wx_fmt=jpeg

文章来源: blog.csdn.net,作者:敲代码的灰太狼,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/tongtongjing1765/article/details/100581778

(完)