如何记录用户输入

时间:2017-03-28 08:04:50

标签: linux logging tcsh

我们有很多用户su使用相同的帐户,我想跟踪每个用户运行的命令,而不使用这些命令的输出。

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

完美的解决方案是捕获" echo",即用户"发送的内容"当他回击时,他的shell,但我没有设法制定一个足够好的问题谷歌在这方面有所帮助。 任何人都可以指出我正确的方向吗?

*考虑到我没有root权限

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

1 个答案:

答案 0 :(得分:0)

sudo su并不比单独su好多少,但您可能希望了解通过LOG_INPUTLOG_OUTPUT激活的I / O记录功能sudoers(5)手册页中的标签。

  

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)命令。   如果标准输出或标准错误未连接到用户的tty,由于I / O重定向或者因为该命令是管道的一部分,该输出也会被捕获并存储在单独的日志文件中。

         

    输出记录到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。