我一直在编辑.bashrc
文件和其他初始化文件,似乎我留下了一些代码片段或两个在提示时导致一些错误(例如文件丢失),但我找不到他们。如何调试bash提示符?
如何调试提示以找出我不小心被黑客入侵的init脚本?
我一直在编辑.bashrc
文件和其他初始化文件,似乎我留下了一些代码片段或两个在提示时导致一些错误(例如文件丢失),但我找不到他们。如何调试bash提示符?
如何调试提示以找出我不小心被黑客入侵的init脚本?
大多数shell都具有显示正在执行的命令的调试标志。 Bash甚至可能会在扩展变量之前和之后显示一个命令。你有没有试过检查(我相信)-c -x或-X标志,看看它们是否显示你正在寻找的信息。
您可以将它们设置为rc文件(大多数全局文件)中的第一件事,或者通过从另一个shell中调用它将其传递到bash命令中。实际上,如果您从另一个shell调用bash,您还可以使用脚本命令来记录您在文件中看到的所有内容,这使得事后分析变得更加容易。
把东西转储到一个文件后,几个简单的grep就把我需要的东西拉出来了。 – fny
试试,看你已经定义的提示 - 它可能在某些点文件在你的home目录:
grep PS1 ~/.*
你可以看到提示的当前值由刚刚打印出来:
echo $PS1
HTH
检查主目录中的.bash_history
文件,以了解您已运行的命令。如果您使用诸如vi filename
之类的命令来打开init脚本,它会在命令历史记录中找到它们。
尝试使用-x标志调用bash,然后找到.bashrc或.bash_profile或您正在使用的任何东西。这应该足够了冗长找到你的问题
即:
bash -x
source .bashrc
得到一个干净的初始状态的最简单方法是使用SSH到您当前的主机,但不是让SSH启动您的外壳采用默认设置,您提供了一个明确的命令,可以防止.bashrc
被读取。
ssh -tt localhost /bin/bash --norc
的-tt
力SSH分配一个TTY,它是当你打开外壳连接东西通常会发生,但不默认运行的明确命令时。
--norc
防止bash读取您的设置文件(因为我们自己想这样做)。
您现在应该在bash提示符下,在清洁环境中。
set -x # Enable tracing
source .bashrc
在务实的层面,有一两件事你可以迅速做将是一个虚拟的用户添加到您的机器:这对于检查哪些变量设置为您
.bashrc
运行前等启用跟踪和源的.bashrc
是有用,然后将在该帐户中创建的文件与您的文件进行比较。更复杂的计划是找出违约来自哪里,并与这些违约相比较。当然,如果您修改了系统范围的文件,您需要找到一种方法将文件从安装包中取出。 –