linux - 生成包含用户在 Linux 服务器上执行的所有代码行的日志
问题描述
问题:
我有一个 Linux 服务器,我必须在该服务器上记录任意用户x在机器上执行的每一行代码。用户通过 SSH 连接到服务器,并有权创建自己的conda 虚拟环境;简而言之,这意味着用户可以通过在线存储库 下载各种版本的Python3、Julia、IPython和R。我的目标是记录每一个!在服务器上执行的代码行,在上述任何内核中,运行(交互式)解释或 编译。我试过的:
- 使用grep 和ps解析用户x的相关进程 pid ,并使用各种适当的标志通过strace运行它们。可以记录以这种方式执行的代码行,但是记录的数据中存在太多噪音。
- 要从正在运行的进程(即 /proc/ *pid* /fd/0 中的 python3 )重定向或读取标准输入,但据我了解,如果不通过tmux 之类的东西运行终端,这是不可能的。我的想法是;如果我能以某种方式管理正在运行的进程的标准输入,我应该能够解析机器上执行的所有代码行。
我可能会尝试的想法:
- 禁止所有用户使用conda,并提供一堆预定义的虚拟conda环境。通过这种方式,我可以围绕每个内核编写一个包装器,这应该让我可以访问管理正在运行的进程的标准输入(?)
- 强制用户在登录时通过tmux,以控制正在运行的进程的标准输入。然而,这对于用户来说似乎太容易绕过(?)
我对这篇文章的意图:
我不希望这个问题有一个完整的解决方案,但是您以尝试新想法的形式输入,关于该主题的文献,相关的谷歌关键字,现有的标准化解决方案,关于我的目标是否现实的想法 -或其他任何事情都非常感谢。
解决方案
推荐阅读
- python - Launching subprocesses on resource limited machine
- scala - FP growth model in spark
- css - 为什么导航我的 Rails 应用程序时我的 CSS 媒体查询会中断
- javascript - 在视图中自动播放 HTML5 视频
- python - 使用子类和超类时 __init__ 的参数
- ios - 无法以编程方式实例化初始视图控制器
- php - PHP 在 Docker 中找不到 MySQL 服务器
- mongodb - 将 mongodb 模型连接到 apollo-server 2.0
- parsing - antlr4 匹配选择表达式
- python - timedelta - 从字符串传递 'days=-5' 的最优雅方式