Linux操作系統(tǒng)接收到用戶名和密碼后,會(huì)首先在“/etc/passwd”查找輸入的用戶名,找到該用戶名后會(huì)讀取該用戶的UID和GID以及該用戶的主目錄、個(gè)性化設(shè)置等內(nèi)容。之后根據(jù)查找到的UID,在“/etc/shadow”文件中查詢用戶密碼,如果密碼匹配,則完成登錄過程,進(jìn)入用戶界面或用戶Shell??梢钥闯?,“/etc/passwd”和/etc/shadow”這兩個(gè)文件的重要性。下面就簡單介紹這兩個(gè)文件的內(nèi)容,從底層配置文件了解用戶賬戶在系統(tǒng)中的詳細(xì)信息。
#查看用戶UID
os@tedu:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
......省略
gdm:x:120:125:Gnome Display Manager:/var/lib/gdm3:/bin/false
os: x: 1000: 1000: OS,,,: /home/os: /bin/bash
#1 2 3 4 5 6 7
cups-pk-helper:x:121:116:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin
在passwd文件中每一行代表一個(gè)賬戶信息,每一行以“:”(英文冒號(hào))為分隔符,共7段,保存賬戶的一些基本信息。passwd文件第一行信息為root賬戶信息,該賬戶是最重要的一個(gè)賬戶,對Linux文件系統(tǒng)中的所有文件和設(shè)備擁有絕對控制權(quán)。Root賬號(hào)之后有許多系統(tǒng)運(yùn)行必備的賬號(hào),如:bin、daemon、adm等。再之后是一般用戶賬戶,此處以“os”用戶為例,說明每一行中每字段的意義。
- 賬戶名稱:用戶用來登錄使用的名稱,方便記憶,一般為英文、數(shù)字的組合。
- 賬戶密碼,用戶登錄時(shí)使用的密碼,但是該文件是所有用戶都可讀的,顯然如果可以查看任意用戶的密碼是很不安全的,所以該字段已經(jīng)被替換成了“x”,真實(shí)的密碼已經(jīng)加密并保存到“/etc/shadow”文件中。
- UID(用戶標(biāo)識(shí)符),每個(gè)用戶都有一個(gè)獨(dú)立的UID,由一串?dāng)?shù)字構(gòu)成。
- GID,用戶所在組的ID號(hào),也是由一串?dāng)?shù)字構(gòu)成,gid的信息保存在另一個(gè)文件中,回頭再說
- 用戶信息說明該字段主要是解釋賬號(hào)的意義,比如:姓名、家庭住址、工號(hào)工位信息等。
- 用戶默認(rèn)主文件夾用戶主文件夾的絕對路徑,例如:用戶root的主文件夾在“/root”,用戶os的主文件夾在“/home/os”??梢酝ㄟ^修改該路徑將用戶主文件夾移動(dòng)到別的目錄中。
- 用戶默認(rèn)Shell前面章節(jié)中提到Ubuntu操作系統(tǒng)中打開終端操作時(shí)是打開的bash環(huán)境,因?yàn)閁buntu默認(rèn)的shell是bash。對不同用戶來說可以通過修改該字段,設(shè)置自己喜歡的shell環(huán)境為默認(rèn)環(huán)境。
同passwd文件類似,shadow文件中也是每一行代表一個(gè)賬戶信息,其中每一行用“:”分割,共分為9個(gè)字段,如下所示。
查看shadow文件中的用戶密碼
os@tedu:~$ sudo cat /etc/shadow
root:!:17729:0:99999:7:::
daemon:*:17647:0:99999:7:::
bin:*:17647:0:99999:7:::
......省略
os: $6$6YKe......省略/cbvit.mCWmeeuceQM0: 17729: 0: 99999: 7 : : :
#1 2 3 4 5 6 7 8 9
cups-pk-helper:*:17729:0:99999:7:::
每個(gè)字段的意義如下:
- 賬戶名稱:用戶用來登錄使用的名稱,方便記憶。
- 密碼:賬戶的真實(shí)密碼,一般會(huì)加密之后再進(jìn)行保存,很難被破解。另外,在不同的Linux發(fā)行版中,采用的加密算法可能也不相同,但對某一種加密算法來說,加密后的密碼長度是一定的,可以通過改變加密后的密碼長度來使密碼失效,達(dá)到限制用戶登錄目的。
- 最近更新密碼的日期:該字段保存的是上一次更改密碼的日期,該日期以天為單位,表示從1970年1月1日至今累加的天數(shù)。示例中顯示“17729”轉(zhuǎn)換成日期為2018年7月17日,說明是在7月17日更改的密碼。
- 密碼不可被更改的天數(shù):該字段表示上次密碼更改后,至少多少天后才可以再更改密碼。示例中該字段是0,表示隨時(shí)可以更改密碼。該字段可以限制用戶或管理員頻繁更改密碼。
- 密碼需要重新更改的天數(shù):該字段表示,上次更改密碼后,最多多少天后需要更改密碼,用戶或管理員必須在規(guī)定的時(shí)間內(nèi)修改密碼,否則密碼會(huì)過期。密碼過期后,用戶依然是可以登錄系統(tǒng)并進(jìn)行其他工作的,不過密碼過期后會(huì)在用戶登錄時(shí)強(qiáng)制要求更改密碼才可以繼續(xù)使用。示例中該字段是99999,換算為年大約273年,表示必須在273年之內(nèi)修改密碼,一般即可認(rèn)為不需要修改密碼。
- 密碼需要更改期限前的警告天數(shù):和第5個(gè)字段相配合,該字段表示在密碼過期前多少天進(jìn)行警告。示例中該字段為7,表示密碼到期前7天會(huì)彈出提醒,提醒用戶或管理員更改密碼。
- 密碼過期后賬戶寬限日期:該字段和第5字段配合,表示當(dāng)密碼過期后幾天內(nèi)如果用戶沒有登錄更改密碼,則密碼會(huì)失效,密碼失效后則該賬戶將無法使用該密碼進(jìn)行登錄。
- 賬戶失效日期:和第3字段類似,也是從1970年1月1日開始累積的天數(shù),表示該賬戶在規(guī)定日期之后將失效,此時(shí)無論密碼是否過期,都不能再使用。
- 保留:該字段保留,以后添加新功能時(shí)可能會(huì)使用到。