当我在 tmux 会话中并执行“我是谁”时,我什么也得不到。似乎 tmux 以某种方式打破了“我是谁”。有解决办法吗?
编辑以澄清正在发生的事情:我有一个以 root 用户身份执行的脚本,我希望能够记录执行它的人。
如果有人
su -
who am i
返回客户端的登录用户和IP我注意到如果有人在两者之间使用 tmux 那么这不再起作用
su -
who am i
什么都不返回。whoami
并$USER
显示根看来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
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)
归档时间: |
|
查看次数: |
274 次 |
最近记录: |