如何记录所有用户提交的所有 UNIX shell 命令?

如何记录所有用户提交的所有 UNIX shell 命令?

有没有一种优雅的方法来记录机器上所有 shell 中提交的每个命令?这是在一个不常使用的 Ubuntu 服务器的环境中,我是其中唯一的人类用户。(自动化系统使用多个用户帐户。)

我希望这是不引人注目的和低开销的,所以如果有一个简单的方法涉及类似的东西我会很高兴script

答案1

自从时间诞生以来(实际上可以追溯到人们必须为他们使用的每个计算机周期支付真金白银的时代),Unix 及其克隆版本就已经acct内置了一个名为进程记账()的系统。这使得系统管理员能够确切地知道用户在做什么,从而可以向他们收取相应的费用。

acct至今,这些功能仍然存在于大多数 Unix 和 Linux 系统中。

本站:http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html告诉您如何启用它。

答案2

你可以使用史努比

安装和删除都非常简单(无需内核模块或补丁)。请注意,这不是一个合适的审计解决方案,而且很容易被规避。

披露:我是当前的史努比维护者。

答案3

这是一个非常好的和快速的记录所有 shell 命令的方法

步骤1:

使用您最喜欢的文本编辑器打开 /etc/bashrc 并在末尾添加以下行:

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

第2步:

通过在 /etc/syslog.conf 文件中添加以下行,将 syslogger 设置为将 local6 捕获到日志文件:

local6.*                /var/log/cmdlog.log

[点击此处查看完整博文]

答案4

您可以使用苏多什作为 shell 包装器。它包括自动记录您所做的一切,并可以回放日志文件。请参阅其网站了解更多信息

相关内容