在Linux中who系列命令存在who/whoami/who am i。
首先我以普通用戶guixian001登陸系統。然後執行命令分別執行命令whoami/who am i/who。截圖如下:
然後我們使用su命令切換到root用戶再執行以上三個命令。
看出區別了嗎?使用whoami命令顯示的是當前“操作用戶”的用戶名。而who am i顯示的是“登錄用戶”的用戶名。要解釋這個現象需要引入linux中的兩個概念——實際用戶(UID,即user id)和有效用戶(EUID,即effective user id)。
實際用戶是指用戶登錄時所使用的用戶,所以在整個登錄會話中,實際用戶是不會變化的。而有效用戶是指當前執行操作的用戶,這個是能夠利用su和sudo命令進行任意切換的。一般情況下,實際用戶和有效用戶是一樣的,只有發生用戶身份切換的時候,會發生差異。所以who am i顯示的是實際用戶的用戶名,即用戶登陸時候的用戶ID,相當於who -m,而whoami顯示的是有效用戶的ID即EUID。
References:
《Linux就是這個範兒》