whoami 命令与 who am i 命令
whoami 命令和 who am i 命令是不同的 2 个命令,
whoami 命令用来打印当前执行操作的用户名
who am i 命令用来打印登陆当前 Linux 系统的用户名。
例
为了能够更好地区分这 2 个命令的功能
我们首先使用用户名为“Cyuyan”登陆 Linux 系统,然后执行如下命令:
[Cyuyan@localhost ~]$ whoami
Cyuyan
[Cyuyan@localhost ~]$ who am i
Cyuyan pts/0 2017-10-09 15:30 (:0.0)
在此基础上,使用 su 命令切换到 root 用户下,再执行一遍上面的命令:
[Cyuyan@localhost ~] su - root
[root@localhost ~]$ whoami
root
[root@localhost ~]$ who am i
Cyuyan pts/0 2017-10-09 15:30 (:0.0)
在未切换用户身份之前,whoami 和 who am i 命令的输出一样.
但使用 su 或者 sudo 命令切换用户身份,骗得过 whoami,但骗不过 who am i。
要解释这背后的运行机制,需要搞清楚什么是实际用户(UID)和有效用户(EUID,即 Effective UID)。
实际用户:指的是登陆 Linux 系统时所使用的用户,因此在整个登陆会话过程中,实际用户是不会发生变化的;
有效用户,指的是当前执行操作的用户,也就是说真正决定权限高低的用户,这个是能够利用 su 或者 sudo 命令进行任意切换的。