Categories: Linux

Linux 以 id 指令查詢使用者 UID 與群組 GID 教學與範例

介紹如何在 Linux 系統上使用 id 指令查詢使用者帳號的相關資訊。

查詢使用者帳號 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 就是所謂的真實使用者 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

參考資料

Share
Published by
Office Guide
Tags: Bash

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

10 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

10 個月 ago