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使用相同的方法,但它没有维护。 (我可能有问题,使其loggingSSH连接,不能记住)
您可以尝试修补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”之后运行一些命令和“历史”…