在 tmux 中执行“我是谁”没有显示结果

在 tmux 中执行“我是谁”没有显示结果

当我在 tmux 会话中执行“我是谁”时,我没有得到任何返回。似乎 tmux 以某种方式破坏了“我是谁”。有解决办法吗?

编辑以澄清发生了什么:我有一个以 root 用户身份执行的脚本,并且我希望能够记录谁执行了它。

如果有人

  1. 使用 ssh 以其用户身份登录
  2. 是否su -
  3. 执行脚本然后who am i返回客户端的登录用户和 IP

我注意到如果有人在中间使用 tmux,那么这个就不再起作用了

  1. 使用 ssh 以自己的用户身份登录
  2. tmux(以防断开连接)
  3. su -
  4. who am i不返回任何内容。whoami$USER显示 root

答案1

它似乎tmux 必须使用--enable-utempter更新utmp(5)。然后必须有适当的二进制文件可用。

在您的情况下,who am itmux 内部找不到与 stdin 关联的条目(在 tmux 中类似于pts/1伪终端从属)。可能性:

  • 您的tmux构建没有此功能,因此在创建窗格时--enable-utempter没有尝试更新(在那里注册伪终端从属设备)。utmp

  • 或者没有utemptertmux 可以使用的可执行文件。在我的 Debian 9 中

    /usr/lib/x86_64-linux-gnu/utempter/utempter
    

    (以防万一:权限rwxr-sr-x、所有权root:utmp)。

要修复,请确保您有utempter。在 Debian 9 中,它位于libutempter0软件包中。如果文件存在并且问题仍然存在,那么很可能您需要重建 tmux,这次使用--enable-utempter

答案2

您可以尝试使用echo $USER。如果失败,以下方法可能会有用:

cut -d: -f1,3 /etc/passwd | grep $UID

相关内容