【问题标题】:how to log user input如何记录用户输入
【发布时间】:2017-03-28 08:04:49
【问题描述】:

我们有很多用户su使用同一个帐户,我想跟踪每个用户在没有这些命令输出的情况下运行了哪些命令。

我尝试用管道将 su 连接到 tee,效果很好,但它也给了我输出。 script 做了同样的事情。我尝试过的另一个解决方案是使用 strace,但这两者都给了我可以捕获密码的击键,并且没有告诉我子外壳中发生了什么,或者至少我无法弄清楚如何正确使用它。我也尝试了各种有趣的重定向,但所有提议的解决方案都是针对 bash 而我坚持使用 tcsh ...... 我不想使用键盘记录器,因为我不想意外捕获密码,我意识到这意味着一旦他们启动文本编辑器,我将不知道人们会做什么,但我可以忍受。

完美的解决方案是捕获“回声”,即用户在点击返回时“发送”到外壳的东西,但我没有设法为谷歌制定一个足够好的问题来帮助解决这个问题正面。 谁能指出我正确的方向?

*考虑到我没有root权限

编辑: 不幸的是,我们的 sudo 版本是

【问题讨论】:

  • 这是sudo 的工作。我建议您让您的管理员将需要特权访问的每个人都放入一个组,使用适当的命令别名配置 sudo,并更改系统上已共享的所有密码。密码就像泡泡糖。它们应该保密,共享时会造成混乱。
  • @ghoti 我们实际上是 `sudo su` 帐户。我知道 /var/log/secure 应该包含我正在寻找的内容,但是无法访问 root 这对我没有帮助:\

标签: linux logging tcsh


【解决方案1】:

sudo su 并不比单独的su 好多少,但您可能想看看通过sudoers(5) 手册页中的LOG_INPUTLOG_OUTPUT 标签激活的I/O 日志记录功能.

log_input

    如果设置,sudo 将在伪 tty 中运行命令 并记录所有用户输入。如果没有连接标准输入 到用户的 tty,由于 I/O 重定向或由于命令 是管道的一部分,该输入也被捕获 并存储在单独的日志文件中。

    输入被记录到iolog_dir选项指定的目录 (/var/log/sudo-io 默认)使用唯一的会话 ID 包含在正常的 sudo 日志行中,前缀为 TSID=iolog_file 选项可用于 控制会话 ID 的格式。

    请注意,用户输入可能包含密码等敏感信息 (即使它们没有回显到屏幕上),这将存储在未加密的日志文件中。在大多数情况下,只需要通过 log_output 记录命令输出即可。

log_output

    如果设置,sudo 将在伪 tty 中运行命令并记录发送到屏幕的所有输出,类似于 script(1) 命令。 如果由于 I/O 重定向或命令是管道的一部分,标准输出或标准错误未连接到用户的 tty,则该输出也会被捕获并存储在单独的日志文件中。

    输出记录到iolog_dir选项指定的目录 (默认为/var/log/sudo-io)使用唯一的会话 ID 包含在正常的 sudo 日志行中,前缀为 TSID=iolog_file 选项可用于 控制会话 ID 的格式。

    可以使用 sudoreplay(8) 实用程序查看输出日志, 也可以用来列出或搜索可用的日志。

使用visudo 修改您的`sudoers 文件。您需要将这两个标签添加到为组提供权限的任何 sudo 条目中。例如:

%admins         ALL=(ALL) NOPASSWD: LOG_INPUT: LOG_OUTPUT: ALL

您还需要使用iolog_dir 选项设置日志记录位置。例如:

Defaults iolog_dir=/var/log/sudo-io/%{user}

请注意,这至少需要 sudo 版本 1.7.4p4。

【讨论】:

  • 是的,我忘了提这个。我想尝试他的解决方案,但我们有旧版本的 sudo
  • 是时候升级sudo了。
  • 静态项目环境,可惜:\相当咸菜
  • 确实如此。好吧,我回答了你的问题,没有提到 sudo 或其版本。通过您的修订,您已使我的答案因您的目的而无效,但我会保留它以防其他人遇到此问题并希望使用更新版本的 sudo 做类似的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多