C語言中文網 目錄

Linux /etc/passwd內容解釋(超詳細)

< 上一頁Linux UID和GID Linux /etc/shadow下一頁 >

Linux 系統中的 /etc/passwd 文件,是系統用戶配置文件,存儲了系統中所有用戶的基本信息,并且所有用戶都可以對此文件執行讀操作。

首先我們來打開這個文件,看看到底包含哪些內容,執行命令如下:

[root@localhost ~]# vi /etc/passwd
#查看一下文件內容
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...省略部分輸出...

可以看到,/etc/passwd 文件中的內容非常規律,每行記錄對應一個用戶。

讀者可能會問,Linux 系統中默認怎么會有這么多的用戶?這些用戶中的絕大多數是系統或服務正常運行所必需的用戶,這種用戶通常稱為系統用戶偽用戶系統用戶無法用來登錄系統,但也不能刪除,因為一旦刪除,依賴這些用戶運行的服務或程序就不能正常執行,會導致系統問題。

不僅如此,每行用戶信息都以 ":" 作為分隔符,劃分為 7 個字段,每個字段所表示的含義如下:

用戶名:密碼:UID(用戶ID):GID(組ID):描述性信息:主目錄:默認Shell

接下來,給大家逐個介紹這些字段。

用戶名

用戶名,就是一串代表用戶身份的字符串。

前面講過,用戶名僅是為了方便用戶記憶,Linux 系統是通過 UID 來識別用戶身份,分配用戶權限的。/etc/passwd 文件中就定義了用戶名和 UID 之間的對應關系。

密碼

"x" 表示此用戶設有密碼,但不是真正的密碼,真正的密碼保存在 /etc/shadow 文件中(下一節做詳細介紹)。

在早期的 UNIX 中,這里保存的就是真正的加密密碼串,但由于所有程序都能讀取此文件,非常容易造成用戶數據被竊取。

雖然密碼是加密的,但是采用暴力破解的方式也是能夠進行破解的。

因此,現在 Linux 系統把真正的加密密碼串放置在 /etc/shadow 文件中,此文件只有 root 用戶可以瀏覽和操作,這樣就最大限度地保證了密碼的安全。

需要注意的是,雖然 "x" 并不表示真正的密碼,但也不能刪除,如果刪除了 "x",那么系統會認為這個用戶沒有密碼,從而導致只輸入用戶名而不用輸入密碼就可以登陸(只能在使用無密碼登錄,遠程是不可以的),除非特殊情況(如破解用戶密碼),這當然是不可行的。

UID

UID,也就是用戶 ID。每個用戶都有唯一的一個 UID,Linux 系統通過 UID 來識別不同的用戶。

實際上,UID 就是一個 0~65535 之間的數,不同范圍的數字表示不同的用戶身份,具體如表 1 所示。

表 1 UID代表不同身份的用戶
UID 范圍 用戶身份
0 超級用戶。UID 為 0 就代表這個賬號是管理員賬號。在 Linux 中,如何把普通用戶升級成管理員呢?只需把其他用戶的 UID 修改為 0 就可以了,這一點和 Windows 是不同的。不過不建議建立多個管理員賬號。
1~499 系統用戶(偽用戶)。也就是說,此范圍的 UID 保留給系統使用。其中,1~99 用于系統自行創建的賬號;100~499 分配給有系統賬號需求的用戶。

其實,除了 0 之外,其他的 UID 并無不同,這里只是默認 500 以下的數字給系統作為保留賬戶,只是一個公認的習慣而已。
500~65535 普通用戶。通常這些 UID 已經足夠用戶使用了。但不夠用也沒關系,2.6.x 內核之后的 Linux 系統已經可以支持 232 個 UID 了。

GID

全稱“Group ID”,簡稱“組ID”,表示用戶初始組的組 ID 號。這里需要解釋一下初始組和附加組的概念。

初始組,指用戶登陸時就擁有這個用戶組的相關權限。每個用戶的初始組只能有一個,通常就是將和此用戶的用戶名相同的組名作為該用戶的初始組。比如說,我們手工添加用戶 lamp,在建立用戶 lamp 的同時,就會建立 lamp 組作為 lamp 用戶的初始組。

附加組,指用戶可以加入多個其他的用戶組,并擁有這些組的權限。每個用戶只能有一個初始組,除初始組外,用戶再加入其他的用戶組,這些用戶組就是這個用戶的附加組。附加組可以有多個,而且用戶可以有這些附加組的權限。

舉例來說,剛剛的 lamp 用戶除屬于初始組 lamp 外,我又把它加入了 users 組,那么 lamp 用戶同時屬于 lamp 組和 users 組,其中 lamp 是初始組,users 是附加組。

當然,初始組和附加組的身份是可以修改的,但是我們在工作中不修改初始組,只修改附加組,因為修改了初始組有時會讓管理員邏輯混亂。

需要注意的是,在 /etc/passwd 文件的第四個字段中看到的 ID 是這個用戶的初始組。

描述性信息

這個字段并沒有什么重要的用途,只是用來解釋這個用戶的意義而已。

主目錄

也就是用戶登錄后有操作權限的訪問目錄,通常稱為用戶的主目錄

例如,root 超級管理員賬戶的主目錄為 /root,普通用戶的主目錄為 /home/yourIDname,即在 /home/ 目錄下建立和用戶名相同的目錄作為主目錄,如 lamp 用戶的主目錄就是 /home/lamp/ 目錄。

默認的Shell

Shell 就是 Linux 的命令解釋器,是用戶和 Linux 內核之間溝通的橋梁。

我們知道,用戶登陸 Linux 系統后,通過使用 Linux 命令完成操作任務,但系統只認識類似 0101 的機器語言,這里就需要使用命令解釋器。也就是說,Shell 命令解釋器的功能就是將用戶輸入的命令轉換成系統可以識別的機器語言。

通常情況下,Linux 系統默認使用的命令解釋器是 bash(/bin/bash),當然還有其他命令解釋器,例如 sh、csh 等。

在 /etc/passwd 文件中,大家可以把這個字段理解為用戶登錄之后所擁有的權限。如果這里使用的是 bash 命令解釋器,就代表這個用戶擁有權限范圍內的所有權限。例如:

[root@localhost ~]# vi /etc/passwd
lamp:x:502:502::/home/lamp:/bin/bash

我手工添加了 lamp 用戶,它使用的是 bash 命令解釋器,那么這個用戶就可以使用普通用戶的所有權限。

如果我把 lamp 用戶的 Shell 命令解釋器修改為 /sbin/nologin,那么,這個用戶就不能登錄了,例如:

[root@localhost ~]# vi /etc/passwd
lamp:x:502:502::/home/lamp:/sbin/nologin

因為 /sbin/nologin 就是禁止登錄的 Shell。同樣,如果我在這里放入的系統命令,如 /usr/bin/passwd,例如:

[root@localhost ~]#vi /etc/passwd
lamp:x:502:502::/home/lamp:/usr/bin/passwd

那么這個用戶可以登錄,但登錄之后就只能修改自己的密碼。但是,這里不能隨便寫入和登陸沒有關系的命令(如 ls),系統不會識別這些命令,同時也就意味著這個用戶不能登錄。
< 上一頁Linux UID和GID Linux /etc/shadow下一頁 >

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo