介紹如何在 Linux 系統上使用 id
指令查詢使用者帳號的相關資訊。
id
指令可以用來查詢使用者帳號 ID 與各群組 ID 資訊:
# 查詢目前使用者的帳號 ID 與各群組 ID 資訊
id
uid=1000(myuser) gid=1000(myuser) groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),108(lxd),114(netdev)
亦可指定要查詢的使用者:
# 查詢 myuser 使用者的帳號 ID 與各群組 ID 資訊
id myuser2
uid=1001(myuser2) gid=1001(myuser2) groups=1001(myuser2)
當建立使用者時,會指定使用者 ID 與預設群組 ID,這個使用者 ID 與群組 ID 就是所謂的真實使用者 ID(Real UID,即 RUID)與真實群組 ID(Real GID,即 RGID)。
由於 Linux 系統上的行程可以用其他的使用者或群組權限來執行,所以當程式在執行時可能會以其他的使用者身分來執行,這就是有效使用者 ID(Effective UID,即 EUID)與有效群組 ID(Effective Group ID,即EGID)。在大部分的狀況下,真實與有效的 UID 與 GID 會是一樣的。
若要取得有效的 UID 與 GID,可以使用 -u
與 -g
參數:
# 有效使用者 ID id -u
1000
# 有效群組 ID id -g
1000
若要取得真實的 UID 與 GID,可以使用 -ru
與 -rg
參數:
# 真實使用者 ID id -ru
1000
# 真實群組 ID id -rg
1000
若要查詢使用者隸屬的所有群組 ID,可以使用 -G
參數:
# 列出使用者隸屬的所有群組 ID id -G
1000 4 20 24 25 27 29 30 44 46 108 114
root
若在 bash shell 指令稿中需要檢查執行者是否為 root
,可以透過 id
檢查 UID 是否為 0
來判斷:
#!/bin/bash # 檢查是否以 root 權限執行 if [[ `id -u` -ne 0 ]]; then echo "I am not root." exit 1 fi
若在 bash shell 中除了使用標準的 id
指令之外,也可以直接從 $EUID
這個特殊變數取得有效使用者 ID,根據此 ID 來判斷執行者是否為 root
:
#!/bin/bash # 檢查是否以 root 權限執行 if [[ $EUID -ne 0 ]]; then echo "I am not root." exit 1 fi