循环填充.bash_history

时间:2012-07-03 23:34:53

标签: bash shell loops history

如何编写循环以达到bash中$ HISTFILESIZE的限制?

这样的东西会实际打印命令吗?

for i in $(seq 1 $HISTFILESIZE); do echo test-$i;done

目标是查看是否可以使用恶意用户可能用来隐藏其shell历史记录的简单循环覆盖日志。我的.bash_history只附加:chattr + a 我知道依靠.bash_history可能不是追踪的最佳方式,这更像是一个“我很好奇”的问题。

由于 乔恩

2 个答案:

答案 0 :(得分:1)

您不需要seq,Bash有两种方法可以使用for循环来提供数字迭代。

for i in {1..100}

不会将变量作为参数(除非您使用eval)。

for ((i = 1; i <= $HISTFILESIZE; i++))

显然可以使用变量。

你可以这样做:

for ((i = 1; i <= $HISTFILESIZE; i++))
do
    history -s "anything you want"
done

使用这种技术,用户可以删除当前会话的内存中历史列表。当用户退出时,该列表将写入历史文件。

您可以截断历史记录文件:

>~/.bash_history

假设它不是附加的。

答案 1 :(得分:0)

嗯,用户可以随时运行

for i in $(seq 1 $HISTFILESIZE); do echo test-$i;done

就像你说的那样,将输出粘贴到终端中。但.bash_history位于用户的主目录中,因此他可以轻松地chmod +w然后shred