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

And*_*igl 5 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显示根

Kam*_*ski 5

看来tmux 必须用它来构建--enable-utempter才能更新utmp(5)。那么必须有一个合适的二进制文件可用。

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

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

  • 或者没有utempter可执行的tmux可以使用。在我的 Debian 9 中是

    /usr/lib/x86_64-linux-gnu/utempter/utempter
    
    Run Code Online (Sandbox Code Playgroud)

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

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


小智 0

你可以尝试使用echo $USER. 如果失败,这里有一些可能有效的方法:

cut -d: -f1,3 /etc/passwd | grep $UID
Run Code Online (Sandbox Code Playgroud)