咨询热线:4006-75-4006
售前:9:00-23:30 备案:9:00-18:00 技术:7*24h
Linux修改history命令显示记录操作用户,命令执行时间及登陆IP信息
Linux默认的history命令是一个常用的系统内置命令,该命令用来记录在某一个的所有使用过的命令的历史,但默认实在是十分简略,只记录有所执行的命令并没有记录在什么时间,什么人(哪个用户),通过何种方式登录系统(是远程连接系统还是本地登陆所执行的命令)这些比较重要的信息,这些重要的信息是日后运维审计的一部分,那么,我们可以通过改动这个命令来实现 history命令增加记录重要信息。
第一,who am i 命令
这个命令是相对于当前终端的命令,也就是只显示当前终端的登陆信息,如果是远程登陆,比如xshell,ssh这样的登陆方式,示例如下:
本机本地登陆:
xshell 方式登陆:
可以看到,本地登陆和远程登陆 执行who am i 的差别是本地没有IP,登陆方式为tty1, 远程登陆显示IP,登陆方式为pts/0 。
第二,历史命令 history的默认形式和优化后的形式
默认形式:
优化后的形式:
第三,如何优化
编辑/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 是为了防止原变量干扰。