不管是Windows作業系統還是Linux作業系統,想要登入系統必須要有合法的賬戶及密碼。本篇博文主要介紹Linux系統下的賬戶資訊。
博文大綱:
一、Linux系統的賬号及群組
1.UID與GID;
2.使用者賬号;
(1)/etc/passwd檔案結構;
(2)/etc/shadow檔案結構;
3.有效群組與初始群組;
(1)/etc/group檔案結構;
(2)有效群組與初始群組;
(3)/etc/gshadow檔案結構;
二、賬号管理指令;
(1)useradd指令
(2)passwd指令
(3)chage指令
(4)usermod指令
(5)userdel指令
(6)groupadd指令
(7)groupmod指令
(8)groupdel指令
(9)gpasswd指令
(10)id指令
一、Linux系統的賬号及群組
作為Linux系統管理者,相當重要的環節就是“管理賬号”。因為整個系統都是你在管理,并且所有系統的合法使用者的申請都需要你的同意以及配置設定相應的權限,來完成日常工作。這就能看出“管理賬号”的重要性!
1.UID與GID
雖然我們使用者登入Linux作業系統時,輸入的是我們的合法賬号,但是其實LInux作業系統并不會直接認識你的“賬号名稱”的,它僅僅認識賬戶所對應的ID。至于賬戶的存在是為了讓人們可以更好地記憶。當你登入作業系統時,輸入的賬号資訊,“Shell翻譯官”負責将找到賬戶對應的ID号碼,系統才能決定該賬号是否可以登入作業系統。
關于登入時會有兩個ID号碼,來判斷你的身份資訊,是否可以登入作業系統。每個登入的使用者至少都會具有兩個ID:一個是使用者ID(UID);一個是群組ID(GID)。
我們在對檔案、目錄進行檢視屬主、屬組時,非常友好的顯示出了使用者名、組名,但是系統也是根據UID、GID來進行判斷的。賬戶對應的UID、GID存放在/etc/passwd檔案中。
2.使用者賬号
Linux系統上的使用者如果需要登入Linux作業系統來取得對應的Shell環境進行工作時,需要經過以下幾步:
- 首先:查找/etc/passwd檔案是否存在相應的賬号資訊,如果沒有則跳出;如果存在的話,則将該賬号對應的UID與GID在/etc/passwd、/etc/group中讀取出來,另外,該賬号的宿主目錄及Shell環境也将一并讀取出來;
- 其次:就是核對密碼是否正确。這時Linux系統會進入/etc/shadow檔案中找出對應的賬戶與UID,核對輸入的密碼是否正确;
- 最後:如果上述條件都沒有問題的話,這是才會正常的登入到Linux系統中;
當使用者登入Linux作業系統時,/etc/passwd、/etc/shadow檔案是系統進行讀取的(這也是為什麼非法操作者将特殊賬戶寫到/etc/passwd檔案中的緣故)。是以如果想要備份Linux系統的賬号時,這兩個檔案也一定需要備份!
下面中重點介紹一下/etc/passwd/(存放使用者UID、GID)、etc/shadow(存放使用者密碼)的檔案:
(1)/etc/passwd檔案結構
/etc/passwd檔案的構造是這樣的:每一行都代表一個賬号、有幾行就表示系統中存在幾個賬号,裡面很多賬号都是系統正常運作所需使用的,我們将其成為系統程式使用者。注意,這些賬号不可以随意的進行删除、修改等操作。
/etc/passwd檔案的架構是這樣的:

我們以root使用者為例,每段用“:”進行分隔,一共是7段。各段的含義如下:
- 第一段:賬号名稱;就是我們用來正常登陸作業系統的名稱!需要對應UID;
- 第二段:密碼占位符;早期的UNIX作業系統的密碼就是存在在此的,但是因為這個檔案一般的使用者都可以讀取,是以經過Linux的發展,密碼資訊後來存放在/etc/shadow檔案中,但是此處會有一個“x”的标志;
- 第三段:賬戶所對應的UID;關于UID的取值範圍如圖:
保證Linux系統安全——賬号管理一、Linux系統的賬号及群組二、賬号管理指令 - 第四段:使用者所對應的GID;這段資訊與/etc/group檔案資訊有關,用來規範組名與GID的對應關系;
- 第五段:使用者資訊說明欄;這段資訊就是用來解釋這個賬号的意義而已;
- 第六段:使用者的宿主目錄;我們都知道,root使用者宿主目錄就是/root目錄,則普通使用者的宿主目錄在/home/使用者名;
- 第七段:使用者登入系統時所使用的Shell環境;
(2)/etc/shadow檔案結構
/etc/shadow檔案結構也是一行對應一個使用者資訊,不過這個檔案主要是用來存放使用者密碼資訊的,同時這個檔案中的内容不允許随意的進行修改、删除等操作。檔案結構如下:
我們同樣以root使用者為例,每段用“:”進行分隔,一共是9段。各段的含義如下:
- 第一段:賬号名稱;必須與/etc/passwd檔案中的名稱對應即可!
- 第二段:密碼;這個字段才是真正的密碼,而且是經過加密後密碼資訊。這些加密資訊也可以使用特殊的解密工具進行檢視。是以/etc/shadow檔案的權限一般是“-rw-------”或者“----------”,隻有root使用者才可進行讀取、修改。注意這個檔案的權限一般情況不建議亂動,否則可能會出現麻煩!
- 第三段:最近更改密碼的日期;不過很奇怪,為什麼是18167呢?這是因為計算Linux日期的時間是1970年1月1号作為1的累加日期,計算方法如下:
[[email protected] ~]# awk -F : '{print $1,$3}' /etc/shadow | grep root
root 18167
[[email protected] ~]# date -d "1970-1-1 18167 days" "+%Y/%m/%d %H:%m:%s"
2019/09/28 00:09:1569600000
- 第四段:密碼不可更改的天數;表示這個賬号的密碼在最近一次修改之後,需要經過多長時間才可以被修改。0表示随時,99999表示不允許被修改;
- 第五段:密碼需要重新變更的天數(有效期);強制更改密碼的天數。99999表示沒有限制;
- 第六段:密碼變更期限前的警告天數;如果是7的話,還有7天過期時,開始提醒;
- 第七段:密碼過期後的賬号寬限時間(失效期);如果是7的話,表示密碼到期7天内仍然可以使用,如果過期時,登入作業系統,會強制提示修改密碼;
- 第八段:賬号失效日期;表示這個賬号在規定的日期之後,将不可被使用;
- 第九段:保留;以備新功能的加入;
一般使用者密碼忘記之後,可以請系統管理者重新進行設定;但是root密碼忘記之後,就必須進行系統急救模式,重新設定!
3.有效群組與初始群組
通過使用者賬号,我們了解到了跟使用者有關的兩個檔案:/etc/passwd、/etc/shadow檔案,我們還需了解跟群組有關的兩個配置檔案:/etc/group、/etc/gshadow檔案。
(1)/etc/group檔案結構
/etc/group檔案就是存放GID與組名的對應關系的檔案,檔案結構如下:
/etc/group檔案同樣是每一行代表一個群組,也是使用“:”進行分隔,共四段,每段的含義:
- 第一段:組名;與第三字段的GID相對應;
- 第二段:群組密碼;同樣是密碼占位符,通常是系統管理者進行設定的;
- 第三段:GID;就是/etc/passwd第四個字段所對應的GID;
- 第四段:此群組支援的賬号名稱;就是包含哪些使用者加入這個群組中;
我們來簡單的了解一下UID/GID與密碼之間的對應關系,如圖:
(2)有效群組與初始群組
/etc/passwd檔案中第四個字段對應的GID,就是所謂的初始群組;
使用“groups”指令可以檢視其有效群組,如果一個使用者同時加入多個群組,檢視的第一個群組名便是使用者的有效群組;可以使用“newgrp 群組名”進行有效群組的切換。使用“newgrp 群組名”指令時,會進入特殊的Shell環境中,設定完成之後,需要使用“exit”指令退出目前Shell環境中。
(3)/etc/gshadow檔案結構
檔案結構如圖:
使用“:”分隔,也是四個字段,每個字段的含義:
- 第一段:組名;
- 第二段:密碼欄,開頭為“!”表示無合法面膜,是以無群組管理者;
- 第三段:群組管理者的賬号;
- 第四段:加入群組支援的所屬賬号;
二、賬号管理指令
(1)useradd指令
useradd指令,用于添加使用者。常用的參數,如圖:
我們平時添加賬号時,如果沒有太多的需求,直接“useradd 使用者名”即可!這是因為系統已經設定了很多預設值。
我們使用“useradd 使用者名”建立賬号時,系統會預設給我們做以下事情:
- 在/etc/passwd檔案中添加一行與賬号相關的資料,包括建立UID/GID/宿主目錄等;
- 在/etc/shadow檔案中将此賬号的密碼相關參數寫入,但是尚未有密碼;
- 在/etc/group檔案中加入一個以賬号相同的組名;
- 在/home目錄下建立一個與賬号同名的使用者家目錄,且權限為700;
我們可以使用“useradd -D”指令來檢視系統所設定的預設值,如圖:
除了這些基本的賬号設定值之外,UID/GID還有密碼參數在/etc/login.defs檔案中,如圖:
(2)passwd指令
passwd指令主要用于給使用者設定跟密碼相關的内容,常用參數如圖:
(3)chage指令
chage指令主要用于設定更加詳細的密碼參數功能。具體參數,如圖:
(4)usermod指令
usermod指令主要用于設定賬戶相應的參數,常用的參數,如圖:
(5)userdel指令
userdel指令就是為了删除使用者,常用的選項隻有一個:
-r:連同使用者的宿主目錄一起删除;
(6)groupadd指令
groupadd指令用于添加新的使用者組,主要的參數有:
-g:後面接某個指定的GID;
-r:建立系統群組;
(7)groupmod指令
常用的參數有:
-g:修改既有的GID号;
-n:修改既有的群組名稱;
(8)groupdel指令
groupdel指令用于删除群組!
(9)gpasswd指令
使用方法:“gpasswd 群組名”,常用的參數,如圖:
關于群組管理者使用的參數:
(10)id指令
主要用于查詢某人或自己的相關的UID/GID等資訊。使用方法“id 使用者名”即可!
———————— 本文至此結束,感謝閱讀 ————————