虽然使用cat
可能不会导致代码执行,但转义代码将得到处理,因此您很容易被误导认为该脚本实际上是恶意的,因此是无害的。
这是您可以运行的示例命令,该命令将创建“恶意” shell脚本:
echo -e '#!/bin/sh\necho "...doing something bad here..."\nexit\n\033[A\033[Aecho "Hello dear reader, I am just a harmless script, safe to run me!"' > demo.sh
chmod a+x demo.sh
当您检查文件时,它似乎无害:
$ cat demo.sh
#!/bin/sh
echo "Hello dear reader, I am just a harmless script, safe to run me!"
但是您是否应该实际运行它...
$ ./demo.sh
...doing something bad here...
该脚本通过包含原始转义代码来将光标向上移动几行而起作用,因此脚本的其余部分被写在恶意代码的顶部,将其隐藏。
几乎任何其他程序都会显示脚本的含义。只有不处理文件的内容(如节目cat
,more
和less -r
)会产生误导输出。
请注意,tail
并且head
还会产生相同的误导性输出。因此,使用“ + F”比“ -F”更安全。