如何在 Linux 中显示您当前的登录名

热门:
升级您的服务器配置! 申请 AVA 并使用 立减 15%
使用优惠码:

multi-user Linux 环境 中工作时,通常需要知道你当前登录的是哪个用户账户。无论你是在管理服务器、编写自动化脚本,还是排查权限问题,Linux 都提供了多个命令来显示你当前的登录名

使用 whoami 命令

The whoami command is the most straightforward way to display your current effective username.

工作原理:

  • 读取当前进程的effective user ID (EUID)
  • 在 /etc/passwd 中查找关联的用户名
  • 始终显示你当前是谁

最佳使用场景:

  • 在使用 sudo 或切换用户时,”whoami” 会显示当前活动用户

使用 id 命令

The id command provides more than just your username — it shows user ID (UID), group ID (GID), and group memberships. Command:

id -un

或者,不带标志:

id

工作原理:

  • 使用系统的用户数据库来显示当前身份和组信息

  • -u → 显示 UID。

  • -n → 打印用户名而不是数字 ID。

使用 logname 命令

The logname command displays the original username used to start the session.

命令:

logname

关键区别:

  • logname 始终返回用于登录该会话的用户名。

  • 如果你通过 su 或 sudo 切换了用户,它仍会显示原始登录名。

使用 “who” 命令

The who command displays all users currently logged in and their session details.

命令:

who am i

示例输出:

john tty1 2025-08-29 09:12

工作原理:

  • 从 /var/run/utmp 读取会话数据。

  • 显示原始登录用户名、终端和登录时间戳。

🔹 最佳使用场景:

  • 在审计当前会话multi-user 环境时。

使用 $USER 环境变量

在大多数 Linux 发行版中,你当前的用户名存储在$USER 环境变量中。

命令:

echo $USER

示例输出:

john

工作原理:

  • 获取登录时设置的 $USER 变量值。

  • 轻量且非常快

高级使用场景

a) 在 Shell 脚本中

#!/bin/bash
echo "Script executed by: $USER"

适用于自动化日志记录

b) 检查服务器上的已登录用户

who

输出示例:

john pts/0 2025-08-29 10:20 (192.168.1.10)
alice pts/1 2025-08-29 10:30 (192.168.1.15)

显示所有活动用户

c) 与 ps 结合查看进程所有者

ps -u $USER
  • 显示当前用户拥有的所有进程

 安全注意事项

  • 多用户服务器: 在运行特权命令之前,始终验证你的effective user

  • Sudo 上下文: 使用 “whoami” 而不是 $USER,以避免环境变量欺骗

  • 日志脚本: 为了准确报告用户名,优先使用 id -un。

 结论

Linux 提供了多个命令来显示你当前的登录名,但每个命令的用途略有不同:

  • 使用 “whoami” 获取当前用户身份。
  • 使用 “id -un”,当你还需要组信息时。
  • 使用 “logname” 查找最初登录的人。
  • 使用 echo $USER 进行快速查询和 shell 脚本编写。

理解这些差异对于系统管理、自动化脚本编写和安全审计至关重要。