如何使用 id 命令?

roc_guo發表於2022-12-06
Linux 中的 id 命令

如下為 id 命令的語法:

id [options] [username]

在實際命令中,如果沒有提供 username(即使用者名稱),那麼該命令將會顯示當前登入使用者的資訊。

比如,下面例子為在 ubuntu 中顯示當前登入使用者的資訊:

$ id
uid=1000(gliu) gid=1000(gliu) groups=1000(gliu),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),119(lpadmin),130(lxd),131(sambashare)

在上面的輸出中,使用者 gliu 的 uid為1000,gid 為 1000,這是使用者 gliu 預設所屬的主要組。

除此之外,使用者 gliu 也是某些其他組的成員,這些組也顯示在輸出中。

以下是id命令的最常見選項:

選項 描述
-u 列印有效的使用者ID
-g 列印有效的組ID
-G 列印使用者所屬的所有組的ID
-n 列印名稱(需與-u、-g 或 -G 組合)
-r 列印真實ID(需與-u、-g 或 -G 組合)
“真實”與“有效”的使用者ID和組ID

這可能會讓你感到有些疑惑,什麼是 “真實” 的使用者ID?什麼是 “有效” 的使用者ID?

在系統中建立使用者時,會為其指定使用者名稱、使用者ID(uid)和預設的組,該預設組的ID就是該使用者的gid,這就是“真實”的使用者ID和組ID。

同時,在Linux中,程式可以透過其他使用者和組執行,所以還有第二組ID,即稱為“有效”的ID。

大多數時候,“真實”ID和“有效”ID是相同的。但是也有不同的時候,也就是使用有效ID的時候,比如普通使用者需要修改受保護的檔案,最常見的場景就是使用 passwd 命令修改密碼。修改密碼其實是修改的 root 使用者所屬的 /etc/passwd 檔案。

id 命令的一些例子

接下來我們介紹一些使用 id 命令的例子。

1,列印某個使用者的 uid 和gid

要列印使用者的 uid 和 gid,只需在 id 命令後指定使用者名稱即可:

id <username>

可以列出 Linux 系統中所有的使用者,以獲取使用者名稱。關於如何列出所有使用者,我們後面會單獨介紹。

2,僅列印使用者的 UID

可以使用 -u 選項來列印使用者的 uid。如前所述,如果省略使用者名稱,它會顯示當前登入使用者的資訊。如下語法結構:

id -u

注意,這裡只會顯示 uid,它是一個數值,而不是名稱:

$ id -u
1000
3,僅列印使用者的 gid

可以使用選項 -g 來列印使用者的 gid。這裡所說的 gid 是指使用者所屬的預設組的組ID,它是一個數值。

id -g

同樣,它只會顯示組的數字ID,看下面的例子:

$ id -g nobody
65534
4,列印使用者所屬的所有其他組的ID

一個使用者可以屬於多個組,這是 Linux 檔案系統的基本特性。你可以使用 usermod 命令並將其新增到 sudo 組以授予其 root 許可權。

可以使用 -G 選項顯示使用者所屬的所有組的 ID:

id -G <username>

同樣,這裡也是隻顯示ID,為數值:

$ id -G gliu
1000 4 24 27 30 46 119 130 131
5,列印使用者名稱稱(而不是數字ID)

數字ID可能會讓人弄混了,所以如果需要的話,可以使用 -n 選項,與 -u、-g 或者 -G 結合使用,來顯示使用者名稱。

比如,如果想要顯示使用者所屬的所有組,可以這樣使用:

id -nG <username>

我們使用先前的那個列印使用者所有組的例子,新增 -n 選項,它會顯示如下內容:

$ id -nG gliu
gliu adm cdrom sudo dip plugdev lpadmin lxd sambashare
列印真實的ID

以上所介紹的例子都顯示的是“有效”的ID,但是幾乎所有時候其也是“真實”的ID。但是,如果你想確保獲得“真實”的ID,可以使用 -r 選項,將其與 -u、-g 或者 -G 結合使用:

id -ru <username>

關於它的輸出,大家可以自行嘗試一下看看。

以上就是本次分享全部內容,歡迎討論。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2926915/,如需轉載,請註明出處,否則將追究法律責任。

相關文章