前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux基础知识(三)

Linux基础知识(三)

作者头像
我被狗咬了
发布2019-09-23 17:35:02
8450
发布2019-09-23 17:35:02
举报
文章被收录于专栏:Python乱炖Python乱炖

今天我们来讲一下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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python乱炖 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 今天我们来讲一下linux中有关用户登陆信息的一些知识。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档