其他用户执行的Linux shell命令的实时视图?

Linux中的root用户是否有可能实时(或接近实时)查看由terminal或SSHlogin的另一个用户运行的shell命令? 显然,它们存储在.bash_history中,但只有在用户注销并且可以禁用时才会保存。

编辑:理想情况下,可以轻松地打开和closures的东西。

作为root用户,你可以用一个简单的包装脚本replace他们的shell,然后把它们传递给真正的shell。 这只会在他们login之前工作。

如果你想进入用户的会话或者screen -x如果你有合作的话,使用sniffy 。

但请注意,根据您当地的法律,对您的用户进行间谍活动可能会受到法规的约束,甚至是非法的。

改变shell是非常微不足道的,修补shell本身更好,但是你必须修补所有的shell。 我们最喜欢的cookies使用这个,作为一个奖励,他不打扰自己禁用bash_history。

 ssh host /bin/sh -i 

Snoopy是exec函数的一个包装,并且logging所有执行的外部二进制文件 (不是shell内build的)

大卫·施密特的build议嗅探使用了一种更好的方法,它点击伪terminal。

ttysnoop使用相同的方法,但它没有维护。 (我可能有问题,使其loggingSS​​H连接,不能记住)

您可以尝试修补ssh来logging一个会话,但该补丁是旧的

伪足和rootsh可用于logging合法的sudos。 shwatcr是监视login的另一件事情。

如果你正在合作,你可以在两个用户之间使用GNU屏幕 – 有一个build立屏幕会话,然后使用screen -x进行其他连接。

如果你想让root在不知情的情况下对其他用户“窥探”,最好的和最有效的解决scheme可能是键盘logging软件/硬件。

Sysdig是系统级探索的强大工具 – 这是你想要的;)

例:

sysdig -i spy_users

类别:安全

spy_users显示交互式用户活动

列出用户以交互方式(例如bash)和用户访问的每个目录启动的每个命令

你可以尝试bash-BOFH补丁。 search周围的补丁。

我写了一个方法来logging所有的“bash”命令/内build的文本文件或“系统日志”服务器,而不使用补丁或特殊的可执行工具。

这是非常容易部署的,因为它是一个简单的shell脚本,需要在“bash”初始化时调用一次。

看到这里的方法: http : //blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger

 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> 

似乎工作得很好,如果你不介意通过一堆换行符sorting。

史努比旨在用于轻量级命令日志logging。

如果您想要在您的系统上执行命令的实时视图,可能就是这样。 警告:史努比是不正确的审计解决scheme,可以很容易地被规避。

但是,如果您希望查看input到terminal中的每个字符,则必须使用另一个工具。

披露:我是目前的史努比维护者。

试试这个出口HISTTIMEFORMAT =“%T”之后运行一些命令和“历史”…