EMP Asked: 2009-05-16 19:40:19 +0800 CST2009-05-16 19:40:19 +0800 CST 2009-05-16 19:40:19 +0800 CST 另一个用户执行的 Linux shell 命令的实时视图? 772 Linux 中的 root 用户是否可以实时(或接近实时)查看另一个通过终端或 SSH 登录的用户正在运行的 shell 命令?显然,它们存储在 .bash_history 中,但这仅在用户注销时保存并且也可以禁用。 编辑:理想情况下可以轻松打开和关闭的东西。 linux security shell 10 个回答 Voted Tim Howland 2009-05-16T20:01:39+08:002009-05-16T20:01:39+08:00 作为 root,您可以用一个简单的包装脚本替换他们的 shell,该脚本在将命令传递给真正的 shell 之前记录他们的命令。这仅在他们登录之前有效。 David Schmitt 2009-05-17T01:45:48+08:002009-05-17T01:45:48+08:00 如果您想闯入用户的会话或者您有合作,请使用sniffy 。screen -x 但请注意,根据您当地的法律,监视您的用户可能会受到法规的约束,甚至是完全非法的。 hayalci 2009-05-17T13:42:08+08:002009-05-17T13:42:08+08:00 换壳规避起来很简单,给壳本身打补丁比较好,但是你必须给所有壳打补丁。我们最喜欢的破解者使用它,作为奖励,他不会因为禁用 bash_history 而烦恼。 ssh host /bin/sh -i Snoopy是 exec 函数的包装器,并记录任何 执行的外部二进制文件(不是 shell 内置) @David Schmitt 的建议 sniffy使用了更好的方法,它点击了伪终端。 ttysnoop使用相同的方法,但它是无人维护的。(我可能在记录 ssh 连接时遇到问题,不记得了) 您可以尝试修补 ssh以记录会话,但该修补程序是旧的。 pseudopod和rootsh可用于记录合法的 sudo。shwatcr是监控登录的另一件事。 Tim 2009-05-16T19:56:35+08:002009-05-16T19:56:35+08:00 如果您要合作,您可以在两个用户之间使用GNU screen - 让一个用户建立 screen 会话,然后让另一个用户使用screen -x. 如果您希望 root 在其他用户不知情的情况下“监视”他们,最好和最有效的解决方案可能是键盘记录软件/硬件。 Andrzej Chabierski 2014-06-16T13:07:15+08:002014-06-16T13:07:15+08:00 Sysdig是系统级探索的强大工具——这就是你想要的;) 例子: sysdig -i spy_users 类别:安全 spy_users 显示交互式用户活动 列出用户交互启动的每个命令(例如从 bash)和用户访问的每个目录 squillman 2009-05-16T20:02:33+08:002009-05-16T20:02:33+08:00 你可以试试 bash-BOFH 补丁。四处寻找补丁。 Francois Scheurer 2012-06-07T03:29:00+08:002012-06-07T03:29:00+08:00 我编写了一种方法,无需使用补丁或特殊的可执行工具即可将所有“bash”命令/内置命令记录到文本文件或“syslog”服务器中。 它很容易部署,因为它是一个简单的 shellscript,需要在 'bash' 初始化时调用一次。 看这里的方法:http: //blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger Jessica Parker 2012-09-03T06:39:52+08:002012-09-03T06:39:52+08:00 function spy() { ptsnum=`ps awfux | grep pt[s]\/"$1" | awk '/bas[h]/{print $2}'` ; /usr/bin/strace -s 1000 -t -f -p $ptsnum 2>&1 3>&1 \ | grep -Poi 'write\(...\"[[:print:]]{1,2}\"[.][.][.][,]..\)' ; } [436] klikevil@epiphany ~ $ w<br> 09:36:43 up 12:06, 6 users, load average: 0.46, 0.29, 0.20<br> USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT<br> klikevil pts/0 75.125.126.8 23:05 2:19m 10:33 0.18s cmd <br> klikevil pts/1 75.125.126.8 00:18 6:50m 0.06s 0.04s sshd: klikevil [priv]<br> klikevil tty7 :0 09:02 17:07m 2:02 0.32s x-session-manager<br> klikevil pts/2 :0.0 09:03 3:30 0.08s 0.08s bash<br> klikevil pts/3 :0.0 09:03 0.00s 0.76s 0.00s w<br> klikevil pts/4 :0.0 09:06 3:13 0.46s 0.00s /bin/sh /usr/bin/thunder<br> [437] klikevil@epiphany ~ $ spy 2<br> write(2, "e"..., 1)<br> write(2, "c"..., 1)<br> write(2, "h"..., 1)<br> write(2, "o"..., 1)<br> write(2, " "..., 1)<br> write(2, "s"..., 1)<br> write(2, "u"..., 1)<br> write(2, "p"..., 1)<br> write(2, " "..., 1)<br> write(2, "d"..., 1)<br> write(2, "o"..., 1)<br> write(2, "g"..., 1)<br> write(2, "\n"..., 1)<br> ^C<br> 如果您不介意对一堆换行符进行排序,似乎工作得很好。 Bostjan Skufca Jese 2014-11-06T15:27:52+08:002014-11-06T15:27:52+08:00 Snoopy旨在用于轻量级命令日志记录。 如果您想实时查看系统上执行的命令,可能就是这样。警告:snoopy 不是适当的审计解决方案,很容易被规避。 但是,如果您希望看到输入到终端的每个字符,那么您将不得不使用另一个工具。 披露:我是目前的史努比维护者。 masber 2013-08-24T22:51:51+08:002013-08-24T22:51:51+08:00 试试这个 export HISTTIMEFORMAT="%T" 然后运行几个命令和“历史”......
作为 root,您可以用一个简单的包装脚本替换他们的 shell,该脚本在将命令传递给真正的 shell 之前记录他们的命令。这仅在他们登录之前有效。
如果您想闯入用户的会话或者您有合作,请使用sniffy 。
screen -x
但请注意,根据您当地的法律,监视您的用户可能会受到法规的约束,甚至是完全非法的。
换壳规避起来很简单,给壳本身打补丁比较好,但是你必须给所有壳打补丁。我们最喜欢的破解者使用它,作为奖励,他不会因为禁用 bash_history 而烦恼。
Snoopy是 exec 函数的包装器,并记录任何 执行的外部二进制文件(不是 shell 内置)
@David Schmitt 的建议 sniffy使用了更好的方法,它点击了伪终端。
ttysnoop使用相同的方法,但它是无人维护的。(我可能在记录 ssh 连接时遇到问题,不记得了)
您可以尝试修补 ssh以记录会话,但该修补程序是旧的。
pseudopod和rootsh可用于记录合法的 sudo。shwatcr是监控登录的另一件事。
如果您要合作,您可以在两个用户之间使用GNU screen - 让一个用户建立 screen 会话,然后让另一个用户使用
screen -x
.如果您希望 root 在其他用户不知情的情况下“监视”他们,最好和最有效的解决方案可能是键盘记录软件/硬件。
Sysdig是系统级探索的强大工具——这就是你想要的;)
例子:
sysdig -i spy_users
类别:安全
spy_users 显示交互式用户活动
列出用户交互启动的每个命令(例如从 bash)和用户访问的每个目录
你可以试试 bash-BOFH 补丁。四处寻找补丁。
我编写了一种方法,无需使用补丁或特殊的可执行工具即可将所有“bash”命令/内置命令记录到文本文件或“syslog”服务器中。
它很容易部署,因为它是一个简单的 shellscript,需要在 'bash' 初始化时调用一次。
看这里的方法:http: //blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger
如果您不介意对一堆换行符进行排序,似乎工作得很好。
Snoopy旨在用于轻量级命令日志记录。
如果您想实时查看系统上执行的命令,可能就是这样。警告:snoopy 不是适当的审计解决方案,很容易被规避。
但是,如果您希望看到输入到终端的每个字符,那么您将不得不使用另一个工具。
披露:我是目前的史努比维护者。
试试这个 export HISTTIMEFORMAT="%T" 然后运行几个命令和“历史”......