轉(zhuǎn)自秦黎的博客
Linux系統(tǒng)中,所有用戶(包括系統(tǒng)管理員)的賬號和密碼都可以在/etc/passwd和/etc/shadow這兩個文件中找到,(用戶和密碼就放在文件中,不怕被其他人看的或者修改嗎?/etc/passwd只有系統(tǒng)管理員才可以修改的,其他用戶可以查看,/etc/shadow其他用戶看不了)
[root@localhost Python-3.5.0]# ls -al /etc/passwd /etc/shadow
-rw-r--r--. 1 root root 2250 12月 14 00:17 /etc/passwd
----------. 1 root root 1263 12月 14 00:17 /etc/shadow
/etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
上面每一行都代表一個用戶,每一行又通過[:]分為七個部分。
- 賬號名稱
- 原先用來保存密碼的,現(xiàn)在密碼都放在/etc/shadow中,所以這里顯示x
- UID,也就是使用者ID。默認的系統(tǒng)管理員的UID為0,我們添加用戶的時候最好使用1000以上的UID,1-1000范圍的UID最好保留給系統(tǒng)用。
- GID,也就是群組ID
- 關(guān)于賬號的一些說明信息(暫時可以忽略)
- 賬號的家目錄,家目錄就是你登陸系統(tǒng)后默認的那個目錄
- 賬號使用的shell
/etc/shadow
root:!:15324:0:99999:7:::
daemon:*:15259:0:99999:7:::
bin:*:15259:0:99999:7:::
letuknowit:$1$cPf/cIvr$sCws95uSip2ljTK052DDB.:15400:5:60:7:2:15490:
這里也是由[:]來進行分割,但是這里一共分出來九個欄目,每個欄目的解釋如下:
- 賬戶名稱(密碼需要與賬戶對應(yīng)的嘛)
- 加密后的密碼(總不能學(xué)CSDN放明文密碼,是吧),如果這一欄的第一個字符為!或者*的話,說明這是一個不能登錄的賬戶,從上面可以看出,ubuntu默認的就不啟用root賬戶。
- 最近改動密碼的日期(不是日期嗎,咋是一堆數(shù)字,別急,這個是從1970年1月1日算起的總的天數(shù))。那怎么才能知道今天距1970年1月1日有多少天呢?很簡單,你改下密碼,然后看下這個欄目中的數(shù)字是多少就可以了!
- 密碼不可被變更的天數(shù):設(shè)置了這個值,則表示從變更密碼的日期算起,多少天內(nèi)無法再次修改密碼,如果是0的話,則沒有限制
- 密碼需要重新變更的天數(shù):密碼經(jīng)常更換才能保證安全,為了提醒某些經(jīng)常不更換密碼的用戶,可以設(shè)置一個天數(shù),強制讓用戶更換密碼,也就是說該用戶的密碼會在多少天后過期,如果為99999則沒有限制
- 密碼過期預(yù)警天數(shù):如果在5中設(shè)置了密碼需要重新變更的天數(shù),則會在密碼過期的前多少天進行提醒,提示用戶其密碼將在多少天后過期
- 密碼過期的寬恕時間:如果在5中設(shè)置的日期過后,用戶仍然沒有修改密碼,則該用戶還可以繼續(xù)使用的天數(shù)
- 賬號失效日期,過了這個日期賬號就不能用了
- 保留的
shadow實例解析
letuknowit:$1$cPf/cIvr$sCws95uSip2ljTK052DDB.:15400:5:60:7:2:15490:
以上面最后用戶letuknowit為例(15400對應(yīng)的日期為2012年3月1日),其保護如下信息:
- 用戶letuknowit最近一次修改密碼的日期是2012年3月1日,
- 在2012年3月6日之前不能再改動密碼了,
- 在2012-3-1到2012-4-29期間letuknowit需要更改密碼,
- 在2012-4-29之前的7天,letuknowit登陸系統(tǒng)的時候,系統(tǒng)會提示letuknowit其密碼即將過期,
- 如果letuknowit一直到2012-4-29都沒有修改密碼,則其仍然可以繼續(xù)使用該賬戶2天,2天后該賬戶將不可用
- 無論如何,到了2012年5月29日,該賬號都將失效