在
linux中,口令文件在/etc/passwd中,早期的這個文件直接存放加密後的密碼,前兩位是"鹽"值,是壹個隨機數,後面跟的是加密的密碼。為了
安全,現在的linux都提供了 /etc/shadow這個影子文件,密碼放在這個文件裏面,並且是只有root可讀的。
/etc/passwd文件的每個條目有7個域,分別是名字:密碼:用戶id:組id:用戶信息:主目錄:shell
例如:ynguo:x:509:510::/home/ynguo:/bin/bash
在利用了shadow文件的情況下,密碼用壹個x表示,普通用戶看不到任何密碼信息。影子口令文件保存加密的口令;/etc/passwd文件中的密碼全部變成x。Shadow只能是root可讀,從而保證了安全。
/etc/shadow文件每壹行的格式如下:用戶名:加密口令:上壹次修改的時間(從1970年1月1日起的天數):口令在兩次修改間的最小天數:口令修改之前向用戶發出警告的天數:口令終止後賬號被禁用的天數:從1970年1月1日起賬號被禁用的天數:保留域。
例如:root:$1$t4sFPHBq$JXgSGgvkgBDD/D7FVVBBm0:11037:0:99999:7:-1:-1:1075498172
下面為test用戶設置密碼,執行如下命令
passwd test
[root@localhost etc]# passwd test
Changing password for user test.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost etc]#
然後進入/etc/shadow文件下面可以看到如下信息
gdm:!!:14302:0:99999:7:::
hzmc:$1$JZMjXqxJ$bvRpGQxbuRiEa86KPLhhC1:14302:0:99999:7:::
mysql:!!:14315:0:99999:7:::
chenhua:$1$YBJZNyXJ$BnpKFD58vSgqzsyRO0ZeO1:14316:0:99999:7:::
test:$1$hKjqUA40$OelB9h3UKOgnttKgmRpFr/:14316:0:99999:7:::
可以發現,***有9個欄目
(1):帳號名稱
(2):密碼:這裏是加密過的,但高手也可以解密的。要主要安全問題(代!符號標識該帳號不能用
來登錄)
(3):上次修改密碼的日期
(4):密碼不可被變更的天數
(5):密碼需要被重新變更的天數(99999表示不需要變更)
(6):密碼變更前提前幾天警告
(7):帳號失效日期
(8):帳號取消日期
(9):保留條目,目前沒用
Unix
系統最初是用明文保存密碼的,後來由於安全的考慮,采用crypt()算法加密密碼並存放在/etc/passwd文件。現在,由
於計算機處理能力的提高,使密碼破解變得越來越容易。/etc/passwd文件是所有合法用戶都可訪問的,大家都可互相看到密碼的加密字符串,這給系統
帶來很大的安全威脅。現代的Unix系統使用影子密碼系統,它把密碼從/etc/pa
sswd文件中分離出來,真正的密碼保存在/etc/shadow文件中,shadow文件只能由超級用戶訪問。這樣入侵者就不能獲得加密密碼串,用於破
解。使用shadow密碼文件後,/etc/passwd文件中所有帳戶的password域的內容為"x",如果password域的內容為"*",則
該帳號被停用。使用passwd這個程序可修改用戶的密碼。