目录
linux history不记录历史命令
我们在操作,或者别人在操作我们的机器时,不希望留下操作痕迹,隐藏掉我们在这台机器的历史命令,下面记录下
不记录历史命令执行
//设置命令不记录进history,执行后只对当前连接有效。也就是别人打开的窗口是记录的,而你执行命令的当前窗口不记录
set +o history
//设置命令记录进history,可以通过这个命令对上面的再次记录
set -o histoty
使用history -d 删除指定命令记录
//显示最近n条历史命令记录
history n
//删除第n条命令记录,这条记录会被记录,露马脚了兄弟
history -d n
编辑 ~/.bash_history 文件删除历史记录
这里有两种方式生效:
1、需要执行history -w 将内存的记录写入文件
2、断开shell后会自动将内存的记录写入文件
同理可以手动编辑 ~/.bash_history 删除历史记录。
但是通过这种方式删除历史命令,只要当前shell没有断开,history看到的还是没有删除的状态,这是为什么呢?
参考上图:
1、执行history -r 从文件读取到内存中
2、下次新起shell后会将文件读取到内存中
使用sed命令快速删除的技巧
比如前3868行是用户的正常操作记录,3868以后是恶意的操作记录。我们可以只保留正常的操作,删除不必要痕迹的历史操作记录,这里,我们只保留前150行:
执行命令前加入空格(部分可用)
测试时使用的是腾讯云的centos,是改过/etc/bashrc系统配置。因此在部分系统上是可用的,如果不生效则需要修改bashrc使这种方式生效。
echo HISTCONTROL=ignorespace >> ~/.bashrc
source ~/.bashrc
chattr +ai .bash_history 不记录后续历史记录
这种方式比较hack,通过给.bash_history文件加入特殊权限(不可编辑和追加),使history命令看到的记录永远都是一致的。
chattr +ai ~/.bash_history
这样history永远都只有执行 chattr +ai .bash_history 命令之前的历史记录(下次新起shell时还是先读取.bash_history文件到内存中)。这种方式使内存中的记录无法成功写入文件,从而达到隐藏命令记录的效果。
在下次新打开一个shell的情况下,重启启用历史记录可执行下面的命令恢复。
chattr -ai .bash_history