標籤:linux shadow /etc/passwd /etc/shadow man passwd man shadow
一,/etc/passwd
1,在講使用者管理前先來看看/etc/passwd檔案。
[[email protected]~]# more /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologin
2,現在來慢慢解釋每個欄位含義。原文可以參考#man 5 passwd
Passwd檔案結構account:password:UID:GID:GECOS:directory:shell。
以
root:x:0:0:root:/root:/bin/bash
為例
Account:使用者的名稱,如例子中的root;
Password:使用者密碼,我們看到這裡只顯示x,不是指密碼就為x,而是表示該密碼已經
被移動到shadow中去了(這個後面會講到)。為什麼這麼做呢?早期的linux
系統密碼是放在passwd檔案中的,但因為這個檔案是要被所有程式都能夠
讀取的,所以很容易造成資料被竊取。後來就將密碼屬性值放到/etc/shadow文
件中去。所以我們看到這裡只顯示x。
UID:使用者ID,這個不用解釋,linux系統還是通過ID來判斷使用者大。
需要注意的是當uid為0時表示系統管理員。所以將其他使用者id改為0,將
使其他人改為管理員。
一般講1-499 保留給系統使用。更細劃分是將1-99會保留給系統預設的帳號。
將100-499則保留給系統一些服務來使用。
GID:組ID。指明使用者所屬組。有關組的概念待會再講。例子中root屬於0組。
GECOS:一般說明使用者資訊的,如電話、地址等附屬資訊。
Directory:即我們常說的家目錄,例子中root家目錄/root
Shell:用來指明使用者登入時預設使用的bash。例子中預設使用/bin/bash。
注意,我們還可以通過這個屬性讓使用者無法登入,達到某些使用者無法登入
的目的。如將shell指向/sbin/nologin。為甚麼需要這樣做呢?如提供列印服務
可以使用系統資源,但沒有必要登入,就可以通過此方法實現。
二、/etc/shadow
1,同樣先來看下shadow長什麼樣子。
[[email protected] ~]# more /etc/shadowroot:$6$dzsbXlAsouy1Rv8y$sjzsbZhORDfSX9eqZRvYh1IA1urCeWkSg5EH2MpeufDj3HozrthVpqxOtNjEpyBxurhG23Vm85y1Z1rfEgKIh/:16665:0:99999:7:::bin:*:15980:0:99999:7:::
2,同樣可以看到每個屬性用“:”來分開。原文解釋可以用#man 5 shadow來查看。
loginname:登入名稱。即/etc/passwd中的account。例子中root。
encryptedpassword:加密的密碼。上節講過密碼資訊儲存shadow中,就儲存在這個
欄位中。可以看到例子中是一段很沒思路的字元。這是因為密碼
通過加密的。使用單向密碼編譯演算法,這樣別人就無法逆向破解了。
細化看$6即代表使用密碼編譯演算法。通過上面顯示可以看到使用者bin
的密碼欄只用個“*”,表示什麼意思呢?*表示賬戶不能用來登入。
date of last password change:最近更改密碼日期。例子中16665表示從1970年1月1日開
始計算的日期時間差。即表示2015年8月18日。
minimum password age:最小密碼壽命?實際指若需要改密碼至少要經過多少天。或者可以
可以理解為在這些天內密碼不允許更改。注意0表示隨時可以更改。
maximum password age:最大密碼壽命?可以這麼理解,為了密碼的安全,需要定期修改
密碼,通過設定密碼壽命,到期後提醒使用者更新密碼。
password warning period:密碼到期前幾天提醒使用者更新密碼。前面說過密碼是有壽命的,
在壽終前需要提醒使用者更新密碼,這個參數就是設定提醒天數的。
password inactivity period:密碼不可用期限。實際上密碼壽終後是還可以繼續使用的,在
它下地獄前還是有魂魄的,魂魄還能呆多久呢?就是這個參數決定的。
account expiration date:賬戶到期時間。這才是最終到期時間。就是說,在使用者密碼到期後
後使用者還不更新密碼的話,將到這個日期後使用者將真的無法使用了。
reserved field:保留位。
三、實踐
1,添加一個使用者及密碼
[[email protected] ~]# useradd test #密碼為test
2,查看passwd檔案
test:x:2009:2011::/home/test:/bin/bash
3,查看shadow檔案
test:$6$zdoUUPZ8$upYc997cVApM6ywWd10NkNtnFJnliwd5aouoNv5fOb72JWj/VtvV69YCJtA1bxHHPlRr7NjVpAdFE0HUa69db1:16675:0:99999:7:::
4,修改shadow檔案後
test:$6$zdoUUPZ8$upYc997cVApM6ywWd10NkNtnFJnliwd5aouoNv5fOb72JWj/VtvV69YCJtA1bxHHPlRr7NjVpAdFE0HUa69db1:16675:5:3:7:::
注意:預設shadow是沒有修改許可權的,我這是使用root使用者添加寫入權限才修改的。
5,使用帳號test登入,提醒如下:
Warning: your password will expire in 3days
6,嘗試修改密碼
[[email protected] ~]$ passwd
Changing password for user test.
Changing password for test.
(current) UNIX password:
You must wait longer to change yourpassword
7,修改上次修改密碼時間後,重新使用test登入,提醒使用者修改密碼。
You are required to change your passwordimmediately (password aged)
Last login: Fri Aug 28 15:42:05 2015 from192.168.1.106
WARNING: Your password has expired.
You must change your password now and loginagain!
本文出自 “丁同學1990” 部落格,請務必保留此出處http://dingtongxue1990.blog.51cto.com/4959501/1690013
/etc/passwd和/etc/shadow檔案解析