首页 > 解决方案 > 生成包含用户在 Linux 服务器上执行的所有代码行的日志

问题描述

  1. 问题:
    我有一个 Linux 服务器,我必须在该服务器上记录任意用户x在机器上执行的每一行代码。用户通过 SSH 连接到服务器,并有权创建自己的conda 虚拟环境;简而言之,这意味着用户可以通过在线存储库 下载各种版本的Python3JuliaIPythonR。我的目标是记录每一个!在服务器上执行的代码行,在上述任何内核中,运行(交互式)解释编译

  2. 我试过的:

    • 使用grepps解析用户x的相关进程 pid ,并使用各种适当的标志通过strace运行它们。可以记录以这种方式执行的代码行,但是记录的数据中存在太多噪音。
    • 要从正在运行的进程(即 /proc/ *pid* /fd/0 中的 python3 )重定向或读取标准输入,但据我了解,如果不通过tmux 之类的东西运行终端,这是不可能的。我的想法是;如果我能以某种方式管理正在运行的进程的标准输入,我应该能够解析机器上执行的所有代码行。
  3. 我可能会尝试的想法:

    • 禁止所有用户使用conda,并提供一堆预定义的虚拟conda环境。通过这种方式,我可以围绕每个内核编写一个包装器,这应该让我可以访问管理正在运行的进程的标准输入(?
    • 强制用户在登录时通过tmux,以控制正在运行的进程的标准输入。然而,这对于用户来说似乎太容易绕过(?)
  4. 我对这篇文章的意图:
    我不希望这个问题有一个完整的解决方案,但是您以尝试新想法的形式输入,关于该主题的文献,相关的谷歌关键字,现有的标准化解决方案,关于我的目标是否现实的想法 -或其他任何事情都非常感谢。

标签: linuxlogginganacondasystem-administrationaudit-logging

解决方案


推荐阅读