首頁 > linux教程 > Linux用戶和用戶組管理 閱讀:0更新時間:2020-03-28 00:58:16

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 可以找到對應的群組名。

做個小實驗,筆者所用的 Linux 系統中,常用的有兩個賬戶,分別為 root 超級管理員賬戶和 c.biancheng.net 普通賬戶,我們先使用 root 賬號登陸并 Vim /etc/passwd,在該文件中找到 c.biancheng.net 賬戶并將其 UID 隨意改一個數字,這時當你查看普通賬戶擁有的文件時,你會發現所有文件的擁有者不再是 c.biancheng.net,而是數字。

具體執行過程如下所示:

#查看系統中是否存在c.biancheng.net這個用戶
[root@livecd ~]#grep 'c.biancheng.net' /etc/passwd
c.biancheng.net:x:500:500:c.biancheng.net:/home/centoslive:/bin/bash
[root@livecd ~]#ll -d /home/centoslive
drwx------. 23 c.biancheng.net centoslive 4096 Apr 9 09:37 /home/centoslive
[root@livecd ~]#vim /etc.passwd
#修改c.biancheng.net賬戶中的UID(第一個 500)為 2000
[root@livecd ~]#ll -d /home/centoslive
drwx------. 23 500 centoslive 4096 Apr 9 09:37 /home/centoslive
#可以看到,之前的 c.biancheng.net 變為了 500,因為修改了UID,導致 500 找不到對應的賬號,因此顯示數字
#記得最后將其再手動改正過來
[root@livecd ~]#vim /etc.passwd
#修改c.biancheng.net賬戶中的UID從 2000 改為 500

由于 c.biancheng.net 賬戶的 UID 已經改為 2000,但其 home 目錄卻記錄的是 500,會導致此用戶再次登錄時無法進入自己的home目錄。

注意,本節為了說明 ID 和用戶名的對應關系,所以才將 /etc/passwd 文件中用戶的 UID 做了更改。此操作很可能會導致某些程序無法進行,因此 /etc/passwd 文件不能隨意修改。

beylze編程學院,一個分享編程知識和seo優化知識的網站。跟著beylze一起學習,每天都有進步。

通俗易懂,深入淺出,一篇文章只講一個知識點。

文章不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。

文章不涉及代碼,不燒腦細胞,人人都可以學習。

當你決定關注beylze(公眾號:beylze),你已然超越了90%的其他從業者!

相關文章

優秀教程

国产亚洲欧美日韩