Linux 如何记录用户输入

Linux 如何记录用户输入,linux,logging,tcsh,Linux,Logging,Tcsh,我们有很多用户suing同一个帐户,我想跟踪他们每个人在没有这些命令输出的情况下运行的命令 我试着将su管道连接到tee,效果很好,只是它也给了我输出。 script也做了同样的事情。我尝试过的另一个解决方案是使用strace,但这两种方法都会给我击键,从而捕获密码,但不会告诉我在子shell中发生了什么,或者至少我不知道如何正确使用它。我也尝试过各种有趣的重定向,但所有建议的解决方案都是针对bash的,而我一直在使用tcsh。。。 我不想使用键盘记录器,因为我不想意外捕获密码,我意识到这意味着

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

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

完美的解决方案是捕捉“回音”,即用户点击return时“发送”到shell的内容,但我没有设法提出一个足够好的问题,让谷歌在这方面有所帮助。 有人能给我指出正确的方向吗

*考虑到我没有根权限

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

sudo su
并不比单独的
su
好多少,但是您可能想看看通过
sudoers(5)
手册页中的
LOG\u输入和
LOG\u输出
标记激活的I/O日志功能

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

    输入被记录到由
    iolog\u dir
    选项指定的目录中 (默认情况下,
    /var/log/sudo io
    )使用唯一的会话ID 它包含在普通sudo日志行中,前缀为
    TSID=
    iolog\u文件
    选项可用于 控制会话ID的格式

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

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

    输出被记录到
    iolog\u dir
    选项指定的目录中 (默认情况下,
    /var/log/sudo io
    )使用唯一的会话ID 它包含在普通sudo日志行中,前缀为
    TSID=
    iolog\u文件
    选项可用于 控制会话ID的格式

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

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

%admins         ALL=(ALL) NOPASSWD: LOG_INPUT: LOG_OUTPUT: ALL
Defaults iolog_dir=/var/log/sudo-io/%{user}
您还需要使用
iolog\u dir
选项设置日志记录位置。例如:

%admins         ALL=(ALL) NOPASSWD: LOG_INPUT: LOG_OUTPUT: ALL
Defaults iolog_dir=/var/log/sudo-io/%{user}

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

sudo su
并不比单独的
su
好多少,但是您可能需要查看通过
sudoers(5)
手册页中的
LOG\u输入和
LOG\u输出
标记激活的I/O日志功能

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

    输入被记录到由
    iolog\u dir
    选项指定的目录中 (默认情况下,
    /var/log/sudo io
    )使用唯一的会话ID 它包含在普通sudo日志行中,前缀为
    TSID=
    iolog\u文件
    选项可用于 控制会话ID的格式

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

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

    输出被记录到
    iolog\u dir
    选项指定的目录中 (默认情况下,
    /var/log/sudo io
    )使用唯一的会话ID 它包含在普通sudo日志行中,前缀为
    TSID=
    iolog\u文件
    选项可用于 控制会话ID的格式

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

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

%admins         ALL=(ALL) NOPASSWD: LOG_INPUT: LOG_OUTPUT: ALL
Defaults iolog_dir=/var/log/sudo-io/%{user}
您还需要使用
iolog\u dir
选项设置日志记录位置。例如:

%admins         ALL=(ALL) NOPASSWD: LOG_INPUT: LOG_OUTPUT: ALL
Defaults iolog_dir=/var/log/sudo-io/%{user}
注意,这需要sudo版本