【发布时间】:2020-08-31 12:36:59
【问题描述】:
我正在尝试找到一种方法来记录系统上任何用户执行的每个命令。 我之前遇到的事情。
- 可以使用 ~/.bashrc_history 文件查看从终端执行的 shell 命令。
这里有个问题,它只记录那些从 bash shell/终端交互执行的命令。
这解决了我的一个问题。但除此之外,我还想记录那些作为 shell 脚本的一部分执行的命令。
注意:我无法控制 shell 脚本。因此,添加像
这样的详细模式#!/bin/bash -xe 是不可能的。
但是,这可以假设我作为系统管理员具有 root 访问权限。
例如:我有另一个可以访问系统的用户。他使用他的帐户运行以下 shell 脚本。
#!/bin/sh
nmap google.com
并作为“$ sh script.sh”运行
现在,我想要的是“nmap google.com”命令应该在此文件执行后记录在某处。
提前致谢。哪怕是一点点帮助,我们也感激不尽。
编辑:我想澄清一下,用户并不知道他们正在被监控。所以我需要一个系统级别的解决方案(可能是用root运行的代理)。我不能依赖用户记录可疑活动。当然,如果他们做了一些可疑或错误的事情,每个人都会避免这种把责任归咎于别人的伎俩
【问题讨论】:
-
你不能在 bash 下这样运行它。我建议删除 bash 标签。
-
#!/bin/bash -xe ....
-e的目的是什么?这对我来说没有意义。我希望您会从中收到一条错误消息。 -
-e 表示如果执行过程中发生任何错误则退出。
-
啊,我错过了这句话set builtin 命令描述中记录的所有单字符shell 选项都可以用作调用shell 时的选项手册页。感谢您指出这一点。
标签: linux bash shell logging command