2021-05-12 14:32:11
關於 Linux UID和GID(使用者ID和組ID)
登陸 Linux 系統時,雖然輸入的是自己的使用者名稱和密碼,但其實 Linux 並不認識你的使用者名稱稱,它只認識使用者名稱對應的 ID 號(也就是一串數位)。Linux 系統將所有使用者的名稱與 ID 的對應關係都儲存在 /etc/passwd 檔案中。
說白了,使用者名稱並無實際作用,僅是為了方便使用者的記憶而已。
要論證 "Linux系統不認識使用者名稱" 也很簡單,在前面章節,我們曾經在網路上下載過 ".tar.gz" 或 ".tar.bz2" 格式的檔案,在解壓縮之後的檔案中,你會發現檔案擁有者的屬性顯示的是一串數位,這很正常,就是因為系統只認識代表你身份的 ID,這串數位就是使用者的 ID(UID)號。
Linux 系統中,每個使用者的 ID 細分為 2 種,分別是使用者 ID(User ID,簡稱 UID)和組 ID(Group ID,簡稱 GID),這與檔案有擁有者和擁有群組兩種屬性相對應(如圖 1 所示)。
圖 1 檔案的擁有者和群組屬性
從圖 1 中可以看到,該檔案的擁有者是超級管理員 root,擁有群組也是 root。讀者可能會問,既然 Linux 系統不認識使用者名稱,檔案是如何判別它的擁有者名稱和群組名稱的呢?
每個檔案都有自己的擁有者 ID 和群組 ID,當顯示檔案屬性時,系統會根據 /etc/passwd 和 /etc/group 檔案中的內容,分別找到 UID 和 GID 對應的使用者名稱和群組名,然後顯示出來。
/etc/passwd 檔案和 /etc/group 檔案,後續文章會做詳細講解,這裡只需要知道,在 /etc/passwd 檔案中,利用 UID 可以找到對應的使用者名稱;在 /etc/group 檔案中,利用 GID 可以找到對應的群組名。
檢視系統中是否存在linuxidc這個使用者
linuxidc@linuxidc:~/linuxidc.com$ grep 'linuxidc' /etc/passwd
linuxidc:x:1000:1000:linuxidc,,,:/home/linuxidc:/bin/bash
linuxidc@linuxidc:~/linuxidc.com$ ll -d /home/linuxidc
drwxr-xr-x 41 linuxidc linuxidc 4096 5月 17 07:14 /home/linuxidc/
Linux檢視使用者的UID和GID
linuxidc@linuxidc:~/linuxidc.com$ id
uid=1000(linuxidc) gid=1000(linuxidc) 組=1000(linuxidc),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)
UID(User Identify)中文使用者ID,相當於身份證一樣,在系統中是唯一的。
超級使用者 UID=0 root
UID號用於唯一標識系統中的使用者,這是一個32位元無符號整數,Linux規定root使用者的UID為0,而其他的一些虛擬使用者如bin,daermon等被分配到一些比較小的UID號,這些使用者通常被安排在passwd檔案的開頭部分,從一個比較大的數開始分配真實使用者的UID號是一個好習慣,這樣能為虛擬使用者提供足夠的餘地。
root:(賬號名稱):x(:賬號密碼):0(:賬號UID):0(:賬號GID):root(:使用者說明):/root(:使用者家目錄):/bin/bash(:shell解析)
1、賬號名稱:和使用者UID對應,這是使用者登入時使用的賬號名稱,在系統中是唯一的,不能重複。
2、賬號密碼:早期的Unix系統中,該欄位是存放賬號密碼的,由於安全原因,後來把這個密碼欄位內容移動到/etc/shadown中,這裡可以看到一個字母表示該使用者密碼在/etc/shadown中保護
3、賬戶UID:賬號UID一般由一個整數表示的,範圍是0~65535。
4、賬戶GID:賬號GID一般也是由一個整數表示的,範圍是0~65535,當新增賬戶時,預設情況下會同時建立一個與使用者同名且UID和GID相同的組。
5、使用者說明:這個欄位是對這個賬號二隊描述說明。
6、使用者家目錄:使用者登入後首先進入的目錄,一般為(/home/使用者名稱)這樣的目錄
相關文章