多年来困扰我的事情是,如果我想在 shell 历史记录中搜索以 root 身份运行的命令,我必须检查两个不同的位置:
- 我得检查一下
/root/.bash_history
。 - 我必须检查
/brian/.bash_history
命令sudo
。
是否有 bash 的解决方案(或者,实际上,任何shell - 我愿意切换)哪个会将sudo
命令存入目标用户的 shell 历史记录中?
答案1
我假设你是操作在那种私有的unix I-am-root-and-only-user模式下,就像我一样。正是为了避免我的人格分裂,我以 root 身份登录。目前 - 我知道是这样一种安全问题。
作为系统管理员,我正忙于安装、测试等工作,以至于无法为用户提供令人满意的登录。
当我使用多个控制台和/或 xterm 时,bash 历史记录仍然会让我感到困惑。到目前为止,我唯一的组织是一个小文件,hist-keep
其中包含我经常使用的几个命令。
如果我想搜索我的命令的 shell 历史记录以 root 身份运行
您只想搜索,还是想“加载”历史文件,这样您就可以历史搜索?
我昨天才抬头看sudo
,因为这个晦涩难懂sudo 与伪问题。我突然意识到“sudo”和“pseudo”在英语中的发音相同,当你考虑“假名”(或“别名”)时,确实存在语义联系。
Sudo 实际上是要对命令进行单独跟踪。这就是“root”检查“brian”(和其他人)以假名“root”执行的操作的方式。
但你更想合并不同的历史。
我觉得解决方案更多的是history -r
处理文件,而不是将 sudo 行注入 root 的历史文件中。
急救解决方案当然是一个简单的函数/脚本搜索在这两个文件中,类似
grep $1 $root-hist
grep "sudo.*$1" $user-hist
然后你可以sudoroot-combigrep "mount"
得到所有包含“mount”的相关行。 (选择您自己的易于使用制表符完成的名称)