AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 8851
In Process
EMP
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 10 个回答
  • 44365 Views

10 个回答

  • Voted
  1. Tim Howland
    2009-05-16T20:01:39+08:002009-05-16T20:01:39+08:00

    作为 root,您可以用一个简单的包装脚本替换他们的 shell,该脚本在将命令传递给真正的 shell 之前记录他们的命令。这仅在他们登录之前有效。

    • 17
  2. David Schmitt
    2009-05-17T01:45:48+08:002009-05-17T01:45:48+08:00

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

    但请注意,根据您当地的法律,监视您的用户可能会受到法规的约束,甚至是完全非法的。

    • 9
  3. 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是监控登录的另一件事。

    • 7
  4. Tim
    2009-05-16T19:56:35+08:002009-05-16T19:56:35+08:00

    如果您要合作,您可以在两个用户之间使用GNU screen - 让一个用户建立 screen 会话,然后让另一个用户使用screen -x.

    如果您希望 root 在其他用户不知情的情况下“监视”他们,最好和最有效的解决方案可能是键盘记录软件/硬件。

    • 4
  5. Andrzej Chabierski
    2014-06-16T13:07:15+08:002014-06-16T13:07:15+08:00

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

    例子:

    sysdig -i spy_users

    类别:安全

    spy_users 显示交互式用户活动

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

    • 4
  6. squillman
    2009-05-16T20:02:33+08:002009-05-16T20:02:33+08:00

    你可以试试 bash-BOFH 补丁。四处寻找补丁。

    • 2
  7. 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

    • 1
  8. 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>
    

    如果您不介意对一堆换行符进行排序,似乎工作得很好。

    • 1
  9. Bostjan Skufca Jese
    2014-11-06T15:27:52+08:002014-11-06T15:27:52+08:00

    Snoopy旨在用于轻量级命令日志记录。

    如果您想实时查看系统上执行的命令,可能就是这样。警告:snoopy 不是适当的审计解决方案,很容易被规避。

    但是,如果您希望看到输入到终端的每个字符,那么您将不得不使用另一个工具。

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

    • 1
  10. masber
    2013-08-24T22:51:51+08:002013-08-24T22:51:51+08:00

    试试这个 export HISTTIMEFORMAT="%T" 然后运行几个命令和“历史”......

    • -3

相关问题

  • 在 SOHO 环境中实施的最佳 VPN 技术是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve