如何编写循环以达到bash中$ HISTFILESIZE的限制?
这样的东西会实际打印命令吗?
for i in $(seq 1 $HISTFILESIZE); do echo test-$i;done
目标是查看是否可以使用恶意用户可能用来隐藏其shell历史记录的简单循环覆盖日志。我的.bash_history只附加:chattr + a 我知道依靠.bash_history可能不是追踪的最佳方式,这更像是一个“我很好奇”的问题。
由于 乔恩
答案 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
。