帮助中心 >  技术知识库 >  云服务器 >  服务器教程 >  Linux修改history命令显示记录操作用户,命令执行时间及登陆IP信息

Linux修改history命令显示记录操作用户,命令执行时间及登陆IP信息

2023-12-11 13:46:49 2598

Linux修改history命令显示记录操作用户,命令执行时间及登陆IP信息

Linux默认的history命令是一个常用的系统内置命令,该命令用来记录在某一个的所有使用过的命令的历史,但默认实在是十分简略,只记录有所执行的命令并没有记录在什么时间,什么人(哪个用户),通过何种方式登录系统(是远程连接系统还是本地登陆所执行的命令)这些比较重要的信息,这些重要的信息是日后运维审计的一部分,那么,我们可以通过改动这个命令来实现 history命令增加记录重要信息。

第一,who am i 命令

这个命令是相对于当前终端的命令,也就是只显示当前终端的登陆信息,如果是远程登陆,比如xshell,ssh这样的登陆方式,示例如下:

本机本地登陆:

image.png

xshell 方式登陆:

image.png

可以看到,本地登陆和远程登陆 执行who am i 的差别是本地没有IP,登陆方式为tty1, 远程登陆显示IP,登陆方式为pts/0 。

第二,历史命令 history的默认形式和优化后的形式

默认形式:

image.png

优化后的形式:

image.png

第三,如何优化

编辑/etc/profile文件,这个文件是全局的,或者编辑用户的环境变量配置文件  ~/.bash_profile,推荐使用全局环境变量文件  也就是/etc/profile, 在该文件末尾添加如下内容:

if [ `who am i| awk '{print $NF}'|awk -F'(' '{print NF}'` -eq 2 ];then
unset HISTTIMEFORMAT
export HISTTIMEFORMAT="[%F %T]-[`whoami`]- at [`who am i| awk '{print $NF}'`] "
else
unset HISTTIMEFORMAT
export HISTTIMEFORMAT="[%F %T]-[`whoami`]- at [`hostname`] "
fi

以上脚本大意为 判断是否远程登陆,如果是远程,显示IP,如果不是远程而是本地登陆,历史命令记录终端所在机器的hostname,unset 是为了防止原变量干扰。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: