/etc/shadow 文件,用於存儲 Linux 系統中用戶的密碼信息,又稱爲「影子文件」。 |
前面介紹了 /etc/passwd 文件,因爲該文件容許全部用戶讀取,易致使用戶密碼泄露,所以 Linux 系統將用戶的密碼信息從 /etc/passwd 文件中分離出來,並單獨放到了此文件中。linux
/etc/shadow 文件只有 root 用戶擁有讀權限,其餘用戶沒有任何權限,這樣就保證了用戶密碼的安全性。算法
注意,若是這個文件的權限發生了改變,則須要注意是不是惡意***。vim
介紹此文件以前,咱們先打開看看,執行以下命令:安全
[root@localhost ~]#vim /etc/shadow root: $6$9w5Td6lg $bgpsy3olsq9WwWvS5Sst2W3ZiJpuCGDY.4w4MRk3ob/i85fl38RH15wzVoom ff9isV1 PzdcXmixzhnMVhMxbvO:15775:0:99999:7::: bin:*:15513:0:99999:7::: daemon:*:15513:0:99999:7::: …省略部分輸出…
同 /etc/passwd 文件同樣,文件中每行表明一個用戶,一樣使用 ":" 做爲分隔符,不一樣之處在於,每行用戶信息被劃分爲 9 個字段。每一個字段的含義以下:bash
用戶名:加密密碼:最後一次修改時間:最小修改時間間隔:密碼有效期:密碼須要變動前的警告天數:密碼過時後的寬限時間:帳號失效時間:保留字段服務器
接下來,給你們分別介紹這 9 個字段。ide
用戶名加密
同 /etc/passwd 文件的用戶名有相同的含義。spa
加密密碼設計
這裏保存的是真正加密的密碼。目前 Linux 的密碼採用的是 SHA512 散列加密算法,原來採用的是 MD5 或 DES 加密算法。SHA512 散列加密算法的加密等級更高,也更加安全。
注意,這串密碼產生的亂碼不能手工修改,若是手工修改,系統將沒法識別密碼,致使密碼失效。不少軟件透過這個功能,在密碼串前加上 "!"、"*" 或 "x" 使密碼暫時失效。
全部僞用戶的密碼都是 "!!" 或 "*",表明沒有密碼是不能登陸的。固然,新建立的用戶若是不設定密碼,那麼它的密碼項也是 "!!",表明這個用戶沒有密碼,不能登陸。
最後一次修改時間
此字段表示最後一次修改密碼的時間,但是,爲何 root 用戶顯示的是 15775 呢?
這是由於,Linux 計算日期的時間是以 1970 年 1 月 1 日做爲 1 不斷累加獲得的時間,到 1971 年 1 月 1 日,則爲 366 天。這裏顯示 15775 天,也就是說,此 root 帳號在 1970 年 1 月 1 日以後的第 15775 天修改的 root 用戶密碼。
那麼,到底 15775 表明的是哪一天呢?可使用以下命令進行換算:
[root@localhost ~]# date -d "1970-01-01 15775 days"
2013年03月11日 星期一 00:00:00 CST
能夠看到,經過以上命令,便可將其換算爲咱們習慣的系統日期。
最小修改時間間隔
最小修改間隔時間,也就是說,該字段規定了從第 3 字段(最後一次修改密碼的日期)起,多長時間以內不能修改密碼。若是是 0,則密碼能夠隨時修改;若是是 10,則表明密碼修改後 10 天以內不能再次修改密碼。
此字段是爲了針對某些人頻繁更改帳戶密碼而設計的。
密碼有效期
常常變動密碼是個好習慣,爲了強制要求用戶變動密碼,這個字段能夠指定距離第 3 字段(最後一次更改密碼)多長時間內須要再次變動密碼,不然該帳戶密碼進行過時階段。
該字段的默認值爲 99999,也就是 273 年,可認爲是永久生效。若是改成 90,則表示密碼被修改 90 天以後必須再次修改,不然該用戶即將過時。管理服務器時,經過這個字段強制用戶按期修改密碼。
密碼須要變動前的警告天數
與第 5 字段相比較,當帳戶密碼有效期快到時,系統會發出警告信息給此帳戶,提醒用戶 "再過 n 天你的密碼就要過時了,請儘快從新設置你的密碼!"。
該字段的默認值是 7,也就是說,距離密碼有效期的第 7 天開始,每次登陸系統都會向該帳戶發出 "修改密碼" 的警告信息。
密碼過時後的寬限天數
也稱爲「口令失效日」,簡單理解就是,在密碼過時後,用戶若是仍是沒有修改密碼,則在此字段規定的寬限天數內,用戶仍是能夠登陸系統的;若是過了寬限天數,系統將再也不讓此帳戶登錄,也不會提示帳戶過時,是徹底禁用。
好比說,此字段規定的寬限天數是 10,則表明密碼過時 10 天后失效;若是是 0,則表明密碼過時後當即失效;若是是 -1,則表明密碼永遠不會失效。
帳號失效時間
同第 3 個字段同樣,使用自 1970 年 1 月 1 日以來的總天數做爲帳戶的失效時間。該字段表示,帳號在此字段規定的時間以外,不論你的密碼是否過時,都將沒法使用!
該字段一般被使用在具備收費服務的系統中。
保留
這個字段目前沒有使用,等待新功能的加入。
忘記密碼怎麼辦
常常有讀者會忘記本身的帳戶密碼,該怎麼處理呢?
對於普通帳戶的密碼遺失,能夠經過 root 帳戶解決,它會從新給你配置好指定帳戶的密碼,而不需知道你原有的密碼(利用 root 的身份使用 passwd 命令便可)。
若是 root 帳號的密碼遺失,則須要從新啓動進入單用戶模式,系統會提供 root 權限的 bash 接口,此時能夠用 passwd 命令修改帳戶密碼;也能夠經過掛載根目錄,修改 /etc/shadow,將帳戶的 root 密碼清空的方法,此方式可以使用 root 沒法密碼便可登錄,建議登錄後使用 passwd 命令配置 root 密碼。