如何记录从 shell 脚本执行的每个命令

问题描述 投票:0回答:2

我正在尝试找到一种方法来记录系统上任何用户执行的每个命令。 我之前遇到过的事情。

  1. 可以使用 ~/.bashrc_history 文件查看从终端执行的 shell 命令。

这里有一个问题,它只记录那些从 bash shell/终端交互执行的命令。

这解决了我的问题之一。但除此之外,我还想记录那些作为 shell 脚本的一部分执行的命令。

注意:我无法控制 shell 脚本。因此,添加像

#!/bin/bash -xe
这样的详细模式是不可能的。

但是,这可以假设我具有系统管理员的 root 访问权限。

例如:我有另一个可以访问系统的用户。他使用他的帐户运行以下 shell 脚本。

#!/bin/bash -xe

并运行“$ sh script.sh”

现在,我想要的是“nmap google.com”命令应该在执行此文件后记录在某处。

提前致谢。即使是一点点的帮助也是值得感激的。

编辑:我想澄清的是,用户并不知道他们正在受到监控。所以我需要一个系统级别的解决方案(可能是使用 root 运行的代理)。我不能依赖用户记录可疑活动。当然每个人都会避免这样的伎俩,如果自己做了什么可疑或错误的事情就归咎于别人

linux bash shell logging command
2个回答
1
投票

我知道您要求 Bash 和 Shell 脚本并相应地标记您的问题,但要考虑到您的要求

  • 记录系统上任何用户执行的每一个命令
  • 用户不知道自己正在被监控
  • 系统级别的解决方案

我假设您正在寻找审计日志记录

因此您可以从类似的文章中受益


0
投票

您可以这样运行脚本:

  • 执行bash(它将覆盖shebang)
  • 为每行添加前缀
  • 在终端和文件中记录

bash -x script.sh |& ts | tee -a /tmp/$(日期 +%F).log

您可以要求其他用户创建别名。

编辑: 您也可以将其添加到 /etc/profile 中(当用户登录时获取)

exec >>(tee -a /tmp/$(date +%F).log)

如果需要,也可以对错误输出执行此操作。保持分开。

© www.soinside.com 2019 - 2024. All rights reserved.