who 和 whoami 命令之间的区别

who 和 whoami 命令之间的区别

命令的手册页描述whowho - show who is logged on

但存在一个类似的命令whoami。的手册页描述whoami

whoami - print effective userid

谁能解释一下这些命令到底是做什么的?它们有何不同?

答案1

我以 root 身份登录 shell 并输入who,这是输出。

who
root     tty1         2014-08-25 14:01 (:0)
root     pts/0        2014-09-05 10:22 (:0.0)
root     pts/3        2014-09-19 10:08 (xxx.xxx.edu)

它有效地显示了已建立连接的所有用户。

ssh ramesh@hostname

再次运行who将导致用户 ramesh 出现另一个条目。

who
root     tty1         2014-08-25 14:01 (:0)
root     pts/0        2014-09-05 10:22 (:0.0)
root     pts/3        2014-09-19 10:08 (xxx.xxx.edu)
ramesh   pts/4        2014-09-19 12:11 (xxx.xxx.edu)

在外壳内root,我只是执行su ramesh然后运行whoami。它会给我当前用户 ramesh 作为输出。

实际上,who给出了当前登录到机器上的所有用户的列表,whoami您可以通过该列表了解当前在 shell 中的用户。

答案2

who:打印当前登录用户的信息。

whoami:打印运行用户的有效用户名whoami

例如:

mohsen@debian:~$ who ## list logged in usernames
mohsen   :0           2014-09-19 16:31 (:0)
mohsen   pts/0        2014-09-19 16:32 (:0)
mohsen   pts/1        2014-09-19 19:42 (:0)

mohsen@debian:~$ whoami 
mohsen                        ##### print my username (mohsen)
mohsen@debian:~$ 

我还推荐一个比 更好的who命令w命令。其输出是:

mohsen@debian:~$ w
 21:45:45 up  5:16,  3 users,  load average: 0.68, 0.54, 0.46
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
mohsen   :0       :0               16:31   ?xdm?   1:40m  0.27s gdm-session-wor
mohsen   pts/0    :0               16:32    1.00s  0.15s  0.01s w
mohsen   pts/1    :0               19:42    2:03m  0.13s 14.06s /usr/bin/python

也可以看看 :

last命令/var/log/btmp/var/log/wtmp文件。

答案3

注意who和之间的区别whoami

who命令将始终显示您用于登录的帐户(真实用户信息)。

whoami命令将显示您的有效用户。

例如,如果您以“blammy”身份登录,则whowhoami命令将显示如下内容:

> who
blammy  pts/0  2011-04-23 13:43 (123.23.123.123)

> whoami
blammy

这表明用户“blammy”于2011年4月23日13:43从IP“123.23.123.123”登录。

如果您随后运行su - kapow,则会将有效用户更改为“kapow”。

现在,whowhoami命令将显示如下内容:

> who
blammy  pts/0  2011-04-23 13:43 (123.23.123.123)

> whoami
kapow

请注意,who信息保持不变,但whoami信息根据 su. 发生变化。

相关内容