当我在 tmux 会话中执行“我是谁”时,我没有得到任何返回。似乎 tmux 以某种方式破坏了“我是谁”。有解决办法吗?
编辑以澄清发生了什么:我有一个以 root 用户身份执行的脚本,并且我希望能够记录谁执行了它。
如果有人
- 使用 ssh 以其用户身份登录
- 是否
su -
- 执行脚本然后
who am i
返回客户端的登录用户和 IP
我注意到如果有人在中间使用 tmux,那么这个就不再起作用了
- 使用 ssh 以自己的用户身份登录
- tmux(以防断开连接)
su -
who am i
不返回任何内容。whoami
并$USER
显示 root
答案1
它似乎tmux 必须使用--enable-utempter
更新utmp(5)
。然后必须有适当的二进制文件可用。
在您的情况下,who am i
tmux 内部找不到与 stdin 关联的条目(在 tmux 中类似于pts/1
伪终端从属)。可能性:
您的
tmux
构建没有此功能,因此在创建窗格时--enable-utempter
没有尝试更新(在那里注册伪终端从属设备)。utmp
或者没有
utempter
tmux 可以使用的可执行文件。在我的 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