Linux基础知识(三)

简介: Linux基础知识(三)

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


640.jpg


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


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

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

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

640.png


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

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

使用last命令进行查看


640.jpg


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

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


640.png

使用lastb进行查看


640.jpg




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

640.jpg

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



2、last

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

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


640.jpg


3、lastb

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

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

640.jpg



4、ac

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

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

apt-get install acct

640.jpg



640.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.png

640.png

640.png


6、w

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

640.png

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



7、users

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


640.png


8、utmpdump

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

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


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

utmpdump /var/run/utmp

640.jpg

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

utmpdump /var/log/wtmp | tail -15


640.jpg


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

utmpdump /var/log/btmp

640.jpg



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


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

utmpdump /var/log/wtmp | grep root


640.jpg


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

utmpdump /var/log/wtmp | grep112.64.153.121

640.png



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

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
7月前
|
Linux 应用服务中间件 Apache
Linux Apache服务详解——Apache服务基础知识
Linux Apache服务详解——Apache服务基础知识
125 2
|
7月前
|
域名解析 缓存 网络协议
Linux DNS服务详解——DNS基础知识
Linux DNS服务详解——DNS基础知识
214 1
|
7月前
|
Linux 芯片
Linux 驱动开发基础知识——认识LED驱动程序 (二)
Linux 驱动开发基础知识——认识LED驱动程序 (二)
83 0
Linux 驱动开发基础知识——认识LED驱动程序 (二)
|
7月前
|
传感器 Linux 开发工具
Linux应用开发基础知识——I2C应用编程(十三)
Linux应用开发基础知识——I2C应用编程(十三)
317 0
Linux应用开发基础知识——I2C应用编程(十三)
|
6月前
|
Linux 芯片
Linux 驱动开发基础知识——查询方式的按键驱动程序_编写框架(十三)
Linux 驱动开发基础知识——查询方式的按键驱动程序_编写框架(十三)
70 2
|
7月前
|
Linux Windows 编译器
|
7月前
|
网络协议 Linux 网络架构
|
7月前
|
运维 监控 Unix
【专栏】Linux系统管理员面试中的常见问题,涵盖基础知识、系统管理和故障排查。
【4月更文挑战第28天】本文概述了Linux系统管理员面试中的常见问题,涵盖基础知识、系统管理和故障排查。面试官会询问Linux与Unix的关系、内核功能、文件系统类型、权限位、用户组概念、链接类型、输入输出、进程和环境变量等。此外,还会涉及软件安装、服务配置、日志监控、网络管理、防火墙配置、LVM、RAID、用户管理、备份策略等实践技能。故障排查和脚本编程能力也是重点,包括系统故障分析、脚本在系统管理中的应用、磁盘空间管理、服务故障诊断及性能优化。准备面试的求职者应注重理论与实践经验的结合,持续学习以提升专业能力。
53 0
|
7月前
|
Ubuntu Linux 芯片
Linux 驱动开发基础知识——设备树的语法驱动开发基础知识(九)
Linux 驱动开发基础知识——设备树的语法驱动开发基础知识(九)
264 1
Linux 驱动开发基础知识——设备树的语法驱动开发基础知识(九)
|
7月前
|
运维 网络协议 安全
Linux vsFTPd服务详解——vsFTPd基础知识
Linux vsFTPd服务详解——vsFTPd基础知识
102 4